<!doctype html>
<html lang="ru" data-bs-theme="dark">

<head>
    <!-- 2024-05-11 10:51:29 -->
        <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Git - partial clone</title>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css" integrity="sha512-jnSuA4Ss2PkkikSOLtYs8BlYIeeIK1h99ty4YfvRPAlzr377vr3CXDb7sb7eEEBYjDtcYj+AjBH3FLv5uSJuXg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.11.3/font/bootstrap-icons.min.css" integrity="sha512-dPXYcDub/aeb08c63jRq/k6GaKccl256JQy/AnOq7CAnEZ9FzSL9wSbcZkMp4R26vBsMLFYH4kQ67/bbV8XaCQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github-dark.min.css" integrity="sha512-rO+olRTkcf304DQBxSWxln8JXCzTHlKnIdnMUwYvQa9/Jd4cQaNkItIUj6Z4nvW1dqK0SKXLbn9h4KwZTNtAyw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/7.1.0/css/flag-icons.min.css" integrity="sha512-bZBu2H0+FGFz/stDN/L0k8J0G8qVsAL0ht1qg5kTwtAheiXwiRKyCq1frwfbSFSJN3jooR5kauE0YjtPzhZtJQ==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <link href="../../../runebook.css" rel="stylesheet" type="text/css">
    <meta name="x-github" content="https://github.com/runebookdev/runebook">
            <meta name="x-i18n-doc" content="git">
        <script>
        function i18n(element) {
            // NOP
        }
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/3.0.5/js.cookie.js" integrity="sha512-F/dia2jKME12jwqiYDayeD+Rr/8jTWUD2wfbuJB0bzSwenSEnXsn4qQ/wVyXUCix5bmCAj8xJdtFr2OqUtjLAw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js" integrity="sha512-7Pi/otdlbbCR+LnW+F7PwFcSDJOuUJB3OxtEHbg4vSMvzvJjde4Po1v4BR9Gdc9aXNUNFVUY+SK51wWT8WF0Gg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/7.8.1/rxjs.umd.min.js" integrity="sha512-D9LDs8YUUVa4V9Gl4Zb+xqRAc7RCzooR3+zzebgK2RMu/KU+dh90pbjEEMzPiSyRSGbSp9j1pZnrO4joGa5WEg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/jquery.mark.min.js" integrity="sha512-mhbv5DqBMgrWL+32MmsDOt/OAvqr/cHimk6B8y/bx/xS88MVkYGPiVv2ixKVrkywF2qHplNRUvFsAHUdxZ3Krg==" crossorigin="anonymous"></script>
    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6424571640879890" crossorigin="anonymous"></script>    <script async src="https://www.googletagmanager.com/gtag/js?id=G-3G5BZ1QEDP"></script>
<script>
    window.dataLayer = window.dataLayer || [];

    function gtag() {
        dataLayer.push(arguments);
    }

    gtag('js', new Date());
    gtag('config', 'G-3G5BZ1QEDP');
</script>    <script>
(function(c, l, a, r, i, t, y) {
    c[a] = c[a] || function() {
        (c[a].q = c[a].q || []).push(arguments)
    };
    t = l.createElement(r);
    t.async = 1;
    t.src = "https://www.clarity.ms/tag/" + i + "?ref=bwt";
    y = l.getElementsByTagName(r)[0];
    y.parentNode.insertBefore(t, y);
})(window, document, "clarity", "script", "jto2hd94r9");
</script>    <script src="../../../theme.js"></script>
</head>

<body>
    <header class="bg-black">
        <div class="container">
            <div class="row">
                <div class="col">
                    <nav class="navbar navbar-expand-lg navbar-dark">
                        <a class="navbar-brand fw-bold" href="https://runebook.dev/ru">
                            <img alt="Runebook.dev" class="d-inline-block align-top mr-1" src="../../../assets/runebook_logo.webp" width="24" height="24">
                            Runebook.dev
                        </a>
                        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                            <span class="navbar-toggler-icon"></span>
                        </button>
                        <div class="collapse navbar-collapse" id="navbarSupportedContent">
                            <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                                <li class="nav-item">
                                    <a class="nav-link" href="https://runebook.dev/ru#docs">Documentation</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="https://runebook.dev/contributors">Contributors</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="https://github.com/runebookdev/runebook/issues">GitHub</a>
                                </li>
                            </ul>
                                                                                                <button class="btn btn-success ms-2" id="showPopupButton">
                                        <i class="bi bi-translate"></i>
                                        Show English
                                    </button>
                                                                                        <div class="form-check form-switch ms-3">
                                <label class="text-light">
                                    <input class="form-check-input" type="checkbox" role="switch" id="theme-switch" checked>
                                    <i class="bi bi-moon-stars-fill"></i>
                                </label>
                            </div>
                        </div>
                    </nav>
                </div>
            </div>
        </div>
    </header>

    <!--sse-->
    <div class="container">
    <div class="row">
        <div class="col">
            <nav aria-label="breadcrumb" class="mt-2">
                <ol class="breadcrumb mb-1">
                    <li class="breadcrumb-item">
                        <a href="https://runebook.dev/ru#docs">
                            <span class="fi fi-ru"></span>                            Русский                        </a>
                    </li>
                    <li class="breadcrumb-item">
                        <a href="-index-.html">
                            Git                            2.43                        </a>
                    </li>
                                            <li class="breadcrumb-item">
                            <a href="-index-.html#Miscellaneous">
                                Miscellaneous                            </a>
                        </li>
                                    </ol>
            </nav>
        </div>
    </div>
    <br>

    <div class="row">
        <div class="col-md-9">
            <main>
                <article>

                    
                    <h1 class="text-body-emphasis" ><span data-i18n="78cb90a46768e09166eeda7ae8ce84aa3b066649e4e1309a5bd592b8257f0306/f7" data-source="partial-clone" onmousemove="i18n(this)">partial-clone</span></h1> <div> <p><span data-i18n="af9af8e2dc74400582a7af24358868fb6dd4b9da31cae976c39d2dda811dbd51/d9" data-source="The &amp;quot;Partial Clone&amp;quot; feature is a performance optimization for Git that allows Git to function without having a complete copy of the repository. The goal of this work is to allow Git to better handle extremely large repositories." onmousemove="i18n(this)">&Fcy;&ucy;&ncy;&kcy;&tscy;&icy;&yacy;  &quot;Partial Clone&quot;  &mdash; &ecy;&tcy;&ocy; &ocy;&pcy;&tcy;&icy;&mcy;&icy;&zcy;&acy;&tscy;&icy;&yacy; &pcy;&rcy;&ocy;&icy;&zcy;&vcy;&ocy;&dcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&scy;&tcy;&icy;  Git , &kcy;&ocy;&tcy;&ocy;&rcy;&acy;&yacy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&iecy;&tcy;  Git  &rcy;&acy;&bcy;&ocy;&tcy;&acy;&tcy;&softcy; &bcy;&iecy;&zcy; &pcy;&ocy;&lcy;&ncy;&ocy;&jcy; &kcy;&ocy;&pcy;&icy;&icy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;. &TScy;&iecy;&lcy;&softcy; &ecy;&tcy;&ocy;&jcy; &rcy;&acy;&bcy;&ocy;&tcy;&ycy; &mdash; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&icy;&tcy;&softcy;  Git  &lcy;&ucy;&chcy;&shcy;&iecy; &ocy;&bcy;&rcy;&acy;&bcy;&acy;&tcy;&ycy;&vcy;&acy;&tcy;&softcy; &chcy;&rcy;&iecy;&zcy;&vcy;&ycy;&chcy;&acy;&jcy;&ncy;&ocy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&iecy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy;.</span></p> <p><span data-i18n="5be922aa6155c73d204cf66520a3ff52356b47afd359de32175468a08f3ea4fd/a5" data-source="During clone and fetch operations, Git downloads the complete contents and history of the repository. This includes all commits, trees, and blobs for the complete life of the repository. For extremely large repositories, clones can take hours (or days) and consume 100+GiB of disk space." onmousemove="i18n(this)">&Vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &ocy;&pcy;&iecy;&rcy;&acy;&tscy;&icy;&jcy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;  Git  &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&iecy;&tcy; &pcy;&ocy;&lcy;&ncy;&ocy;&iecy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&icy;&mcy;&ocy;&iecy; &icy; &icy;&scy;&tcy;&ocy;&rcy;&icy;&yucy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;. &Scy;&yucy;&dcy;&acy; &vcy;&khcy;&ocy;&dcy;&yacy;&tcy; &vcy;&scy;&iecy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&ycy;, &dcy;&iecy;&rcy;&iecy;&vcy;&softcy;&yacy; &icy; BLOB-&ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &zcy;&acy; &vcy;&iecy;&scy;&softcy; &scy;&rcy;&ocy;&kcy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;. &Dcy;&lcy;&yacy; &ocy;&chcy;&iecy;&ncy;&softcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&iecy;&vcy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &mcy;&ocy;&zhcy;&iecy;&tcy; &zcy;&acy;&ncy;&yacy;&tcy;&softcy; &chcy;&acy;&scy;&ycy; (&icy;&lcy;&icy; &dcy;&ncy;&icy;) &icy; &zcy;&acy;&ncy;&yacy;&tcy;&softcy; &bcy;&ocy;&lcy;&iecy;&iecy; 100 &Gcy;&icy;&Bcy; &dcy;&icy;&scy;&kcy;&ocy;&vcy;&ocy;&gcy;&ocy; &pcy;&rcy;&ocy;&scy;&tcy;&rcy;&acy;&ncy;&scy;&tcy;&vcy;&acy;.</span></p> <p><span data-i18n="517d49f84e54c8fc1c1c2e2a918702a3572e376b148a1a23fb8a641e847d74db/64" data-source="Often in these repositories there are many blobs and trees that the user does not need such as:" onmousemove="i18n(this)">&CHcy;&acy;&scy;&tcy;&ocy; &vcy; &ecy;&tcy;&icy;&khcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;&khcy; &icy;&mcy;&iecy;&iecy;&tcy;&scy;&yacy; &mcy;&ncy;&ocy;&zhcy;&iecy;&scy;&tcy;&vcy;&ocy; &ncy;&iecy;&ncy;&ucy;&zhcy;&ncy;&ycy;&khcy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yucy; &bcy;&lcy;&ocy;&bcy;&ocy;&vcy; &icy; &dcy;&iecy;&rcy;&iecy;&vcy;&softcy;&iecy;&vcy;, &tcy;&acy;&kcy;&icy;&khcy; &kcy;&acy;&kcy;:</span></p> <div> <ol> <li> <p><span data-i18n="efa1fd476958ae9ffefc7e87dcb98cf47511021a604d9cdc648e61fb67709340/d8" data-source="files outside of the user&amp;rsquo;s work area in the tree. For example, in a repository with 500K directories and 3.5M files in every commit, we can avoid downloading many objects if the user only needs a narrow &amp;quot;cone&amp;quot; of the source tree." onmousemove="i18n(this)">&fcy;&acy;&jcy;&lcy;&ycy; &zcy;&acy; &pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&acy;&mcy;&icy; &rcy;&acy;&bcy;&ocy;&chcy;&iecy;&jcy; &ocy;&bcy;&lcy;&acy;&scy;&tcy;&icy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yacy; &vcy; &dcy;&iecy;&rcy;&iecy;&vcy;&iecy;. &Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &vcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy; &scy; 500 &tcy;&ycy;&scy;. &kcy;&acy;&tcy;&acy;&lcy;&ocy;&gcy;&ocy;&vcy; &icy; 3,5 &mcy;&lcy;&ncy; &fcy;&acy;&jcy;&lcy;&ocy;&vcy; &vcy; &kcy;&acy;&zhcy;&dcy;&ocy;&mcy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&iecy; &mcy;&ycy; &mcy;&ocy;&zhcy;&iecy;&mcy; &icy;&zcy;&bcy;&iecy;&zhcy;&acy;&tcy;&softcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &bcy;&ocy;&lcy;&softcy;&shcy;&ocy;&gcy;&ocy; &kcy;&ocy;&lcy;&icy;&chcy;&iecy;&scy;&tcy;&vcy;&acy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;, &iecy;&scy;&lcy;&icy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yucy; &ncy;&ucy;&zhcy;&iecy;&ncy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &ucy;&zcy;&kcy;&icy;&jcy;  &quot;cone&quot;  &dcy;&iecy;&rcy;&iecy;&vcy;&acy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&icy;&kcy;&ocy;&vcy;.</span></p> </li> <li> <p><span data-i18n="6716999ea8df60aa925a56ed240bde9a14df4701af61e2b53af695e8229b741a/3a" data-source="large binary assets. For example, in a repository where large build artifacts are checked into the tree, we can avoid downloading all previous versions of these non-mergeable binary assets and only download versions that are actually referenced." onmousemove="i18n(this)">&kcy;&rcy;&ucy;&pcy;&ncy;&ycy;&iecy; &bcy;&icy;&ncy;&acy;&rcy;&ncy;&ycy;&iecy; &acy;&kcy;&tcy;&icy;&vcy;&ycy;. &Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &vcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy;, &gcy;&dcy;&iecy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&iecy; &acy;&rcy;&tcy;&iecy;&fcy;&acy;&kcy;&tcy;&ycy; &scy;&bcy;&ocy;&rcy;&kcy;&icy; &rcy;&iecy;&gcy;&icy;&scy;&tcy;&rcy;&icy;&rcy;&ucy;&yucy;&tcy;&scy;&yacy; &vcy; &dcy;&iecy;&rcy;&iecy;&vcy;&iecy;, &mcy;&ycy; &mcy;&ocy;&zhcy;&iecy;&mcy; &icy;&zcy;&bcy;&iecy;&zhcy;&acy;&tcy;&softcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &vcy;&scy;&iecy;&khcy; &pcy;&rcy;&iecy;&dcy;&ycy;&dcy;&ucy;&shchcy;&icy;&khcy; &vcy;&iecy;&rcy;&scy;&icy;&jcy; &ecy;&tcy;&icy;&khcy; &ncy;&iecy;&ocy;&bcy;&hardcy;&iecy;&dcy;&icy;&ncy;&yacy;&iecy;&mcy;&ycy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &rcy;&iecy;&scy;&ucy;&rcy;&scy;&ocy;&vcy; &icy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&tcy;&softcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &tcy;&iecy; &vcy;&iecy;&rcy;&scy;&icy;&icy;, &ncy;&acy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &dcy;&iecy;&jcy;&scy;&tcy;&vcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy; &iecy;&scy;&tcy;&softcy; &scy;&scy;&ycy;&lcy;&kcy;&icy;.</span></p> </li> </ol> </div> <p><span data-i18n="8e73c32f8060499eb7f93a9894f17a1167856211ce8a6b13158e9b05def4aa0b/5d" data-source="Partial clone allows us to avoid downloading such unneeded objects &lt;strong&gt;in advance&lt;/strong&gt; during clone and fetch operations and thereby reduce download times and disk usage. Missing objects can later be &amp;quot;demand fetched&amp;quot; if/when needed." onmousemove="i18n(this)">&CHcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&iecy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&iecy;&tcy; &ncy;&acy;&mcy; &icy;&zcy;&bcy;&iecy;&zhcy;&acy;&tcy;&softcy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &tcy;&acy;&kcy;&icy;&khcy; &ncy;&iecy;&ncy;&ucy;&zhcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &ocy;&pcy;&iecy;&rcy;&acy;&tscy;&icy;&jcy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy; &icy; &tcy;&iecy;&mcy; &scy;&acy;&mcy;&ycy;&mcy; &scy;&ocy;&kcy;&rcy;&acy;&tcy;&icy;&tcy;&softcy; &vcy;&rcy;&iecy;&mcy;&yacy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &icy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &dcy;&icy;&scy;&kcy;&acy;. &Ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &pcy;&ocy;&zcy;&zhcy;&iecy; &mcy;&ocy;&gcy;&ucy;&tcy; &bcy;&ycy;&tcy;&softcy;  &quot;demand fetched&quot; , &iecy;&scy;&lcy;&icy;/&kcy;&ocy;&gcy;&dcy;&acy; &ecy;&tcy;&ocy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy;.</span></p> <p><span data-i18n="c7bed421036e69e5bd1db5428a3c049f2daa00b2f3ca2d51ead02739914e4629/7e" data-source="A remote that can later provide the missing objects is called a promisor remote, as it promises to send the objects when requested. Initially Git supported only one promisor remote, the origin remote from which the user cloned and that was configured in the &amp;quot;extensions.partialClone&amp;quot; config option. Later support for more than one promisor remote has been implemented." onmousemove="i18n(this)">&Pcy;&ucy;&lcy;&softcy;&tcy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&ocy;&zcy;&zhcy;&iecy; &pcy;&rcy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&vcy;&icy;&tcy;&softcy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &ncy;&acy;&zcy;&ycy;&vcy;&acy;&iecy;&tcy;&scy;&yacy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&mcy; &pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ocy;&mcy;, &pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &ocy;&ncy;  promises  &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &pcy;&ocy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&ucy;. &Pcy;&iecy;&rcy;&vcy;&ocy;&ncy;&acy;&chcy;&acy;&lcy;&softcy;&ncy;&ocy;  Git  &pcy;&ocy;&dcy;&dcy;&iecy;&rcy;&zhcy;&icy;&vcy;&acy;&lcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &ocy;&dcy;&icy;&ncy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;, &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &kcy;&ocy;&mcy;&pcy;&softcy;&yucy;&tcy;&iecy;&rcy;, &scy; &kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&lcy;&scy;&yacy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy;, &icy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &bcy;&ycy;&lcy; &ncy;&acy;&scy;&tcy;&rcy;&ocy;&iecy;&ncy; &vcy; &pcy;&acy;&rcy;&acy;&mcy;&iecy;&tcy;&rcy;&iecy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;  &quot;extensions.partialClone&quot; . &Pcy;&ocy;&zcy;&zhcy;&iecy; &bcy;&ycy;&lcy;&acy; &rcy;&iecy;&acy;&lcy;&icy;&zcy;&ocy;&vcy;&acy;&ncy;&acy; &pcy;&ocy;&dcy;&dcy;&iecy;&rcy;&zhcy;&kcy;&acy; &bcy;&ocy;&lcy;&iecy;&iecy; &chcy;&iecy;&mcy; &ocy;&dcy;&ncy;&ocy;&gcy;&ocy; &pcy;&ucy;&lcy;&softcy;&tcy;&acy; Promisor.</span></p> <p><span data-i18n="8192be83832cd32b6b1eae0b91c645cc7f8d3064a3de1ddada830e3e1ed8d9f1/dc" data-source="Use of partial clone requires that the user be online and the origin remote or other promisor remotes be available for on-demand fetching of missing objects. This may or may not be problematic for the user. For example, if the user can stay within the pre-selected subset of the source tree, they may not encounter any missing objects. Alternatively, the user could try to pre-fetch various objects if they know that they are going offline." onmousemove="i18n(this)">&Dcy;&lcy;&yacy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy;, &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &bcy;&ycy;&lcy; &vcy; &scy;&iecy;&tcy;&icy;, &acy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &kcy;&ocy;&mcy;&pcy;&softcy;&yucy;&tcy;&iecy;&rcy; &icy;&lcy;&icy; &dcy;&rcy;&ucy;&gcy;&icy;&iecy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&iecy; &ucy;&scy;&tcy;&rcy;&ocy;&jcy;&scy;&tcy;&vcy;&acy;-&gcy;&acy;&rcy;&acy;&ncy;&tcy;&ycy; &bcy;&ycy;&lcy;&icy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy;&ncy;&ycy; &dcy;&lcy;&yacy; &icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&yacy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &pcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yucy;. &Ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &bcy;&ycy;&tcy;&softcy; &icy;&lcy;&icy; &ncy;&iecy; &bcy;&ycy;&tcy;&softcy; &pcy;&rcy;&ocy;&bcy;&lcy;&iecy;&mcy;&acy;&tcy;&icy;&chcy;&ncy;&ycy;&mcy; &dcy;&lcy;&yacy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yacy;. &Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &iecy;&scy;&lcy;&icy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&scy;&tcy;&acy;&vcy;&acy;&tcy;&softcy;&scy;&yacy; &vcy; &pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&acy;&khcy; &zcy;&acy;&rcy;&acy;&ncy;&iecy;&iecy; &vcy;&ycy;&bcy;&rcy;&acy;&ncy;&ncy;&ocy;&gcy;&ocy; &pcy;&ocy;&dcy;&mcy;&ncy;&ocy;&zhcy;&iecy;&scy;&tcy;&vcy;&acy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ocy;&gcy;&ocy; &dcy;&iecy;&rcy;&iecy;&vcy;&acy;, &ocy;&ncy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ncy;&iecy; &scy;&tcy;&ocy;&lcy;&kcy;&ncy;&ucy;&tcy;&softcy;&scy;&yacy; &scy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&mcy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;&mcy;&icy;. &Vcy; &kcy;&acy;&chcy;&iecy;&scy;&tcy;&vcy;&iecy; &acy;&lcy;&softcy;&tcy;&iecy;&rcy;&ncy;&acy;&tcy;&icy;&vcy;&ycy; &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&ocy;&pcy;&ycy;&tcy;&acy;&tcy;&softcy;&scy;&yacy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&icy;&tcy;&softcy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &iecy;&scy;&lcy;&icy; &ocy;&ncy; &zcy;&ncy;&acy;&iecy;&tcy;, &chcy;&tcy;&ocy; &ocy;&ncy;&icy; &pcy;&iecy;&rcy;&iecy;&khcy;&ocy;&dcy;&yacy;&tcy; &vcy; &acy;&vcy;&tcy;&ocy;&ncy;&ocy;&mcy;&ncy;&ycy;&jcy; &rcy;&iecy;&zhcy;&icy;&mcy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_non_goals"><span data-i18n="185e74bc1685f977b57107da0076b17588c15e19513c1ebff34dacf03f09362e/84" data-source="Non-goals" onmousemove="i18n(this)">Non-goals</span></h2> <div> <p><span data-i18n="1a204092e54bfb63221492bf772ce4b71d12bbd875034940a528b035aa579d4b/3f" data-source="Partial clone is a mechanism to limit the number of blobs and trees downloaded &lt;strong&gt;within&lt;/strong&gt; a given range of commits &amp;mdash; and is therefore independent of and not intended to conflict with existing DAG-level mechanisms to limit the set of requested commits (i.e. shallow clone, single branch, or fetch &lt;code&gt;&amp;lt;refspec&amp;gt;&lt;/code&gt;)." onmousemove="i18n(this)">&CHcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&iecy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &mdash; &ecy;&tcy;&ocy; &mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy; &ocy;&gcy;&rcy;&acy;&ncy;&icy;&chcy;&iecy;&ncy;&icy;&yacy; &kcy;&ocy;&lcy;&icy;&chcy;&iecy;&scy;&tcy;&vcy;&acy; BLOB-&ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &icy; &dcy;&iecy;&rcy;&iecy;&vcy;&softcy;&iecy;&vcy;, &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&iecy;&mcy;&ycy;&khcy; &vcy; &pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&acy;&khcy; &zcy;&acy;&dcy;&acy;&ncy;&ncy;&ocy;&gcy;&ocy; &dcy;&icy;&acy;&pcy;&acy;&zcy;&ocy;&ncy;&acy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&ocy;&vcy;, &icy; &pcy;&ocy;&ecy;&tcy;&ocy;&mcy;&ucy; &ocy;&ncy; &ncy;&iecy;&zcy;&acy;&vcy;&icy;&scy;&icy;&mcy; &icy; &ncy;&iecy; &pcy;&rcy;&iecy;&dcy;&ncy;&acy;&zcy;&ncy;&acy;&chcy;&iecy;&ncy; &dcy;&lcy;&yacy; &kcy;&ocy;&ncy;&fcy;&lcy;&icy;&kcy;&tcy;&acy; &scy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&mcy;&icy; &mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy;&acy;&mcy;&icy; &ucy;&rcy;&ocy;&vcy;&ncy;&yacy; DAG &dcy;&lcy;&yacy; &ocy;&gcy;&rcy;&acy;&ncy;&icy;&chcy;&iecy;&ncy;&icy;&yacy; &ncy;&acy;&bcy;&ocy;&rcy;&acy; &zcy;&acy;&pcy;&rcy;&ocy;&shcy;&iecy;&ncy;&ncy;&ycy;&khcy; &kcy;&ocy;&mcy;&mcy;&icy;&tcy;&ocy;&vcy; (&tcy;. &iecy;. &pcy;&ocy;&vcy;&iecy;&rcy;&khcy;&ncy;&ocy;&scy;&tcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;, &ocy;&dcy;&icy;&ncy;&ocy;&chcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;). &vcy;&iecy;&tcy;&kcy;&ucy; &icy;&lcy;&icy; &pcy;&ocy;&lcy;&ucy;&chcy;&icy;&tcy;&iecy;  <code>&lt;refspec&gt;</code> ).</span></p> </div> <h2 class="text-body-emphasis"  id="_design_overview"><span data-i18n="92dc1179e1dc4b09f42488f001582694c09a4206f8ab3a555749a74b2560ac7b/02" data-source="Design overview" onmousemove="i18n(this)">Design overview</span></h2> <div> <p><span data-i18n="bb74bf2638d57f655d1c610ac8f456484c49ad5b745c1fc2419b740e395736b9/ed" data-source="Partial clone logically consists of the following parts:" onmousemove="i18n(this)">&CHcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ycy;&jcy; &kcy;&lcy;&ocy;&ncy; &lcy;&ocy;&gcy;&icy;&chcy;&iecy;&scy;&kcy;&icy; &scy;&ocy;&scy;&tcy;&ocy;&icy;&tcy; &icy;&zcy; &scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&icy;&khcy; &chcy;&acy;&scy;&tcy;&iecy;&jcy;:</span></p> <div> <ul> <li> <p><span data-i18n="cf4bff76c066b6502237c66060dca4ffe7f9e421270f0c3a5198c1b3c88aaad4/5b" data-source="A mechanism for the client to describe unneeded or unwanted objects to the server." onmousemove="i18n(this)">&Mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy;, &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&yucy;&shchcy;&icy;&jcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy; &ocy;&pcy;&icy;&scy;&ycy;&vcy;&acy;&tcy;&softcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ucy; &ncy;&iecy;&ncy;&ucy;&zhcy;&ncy;&ycy;&iecy; &icy;&lcy;&icy; &ncy;&iecy;&zhcy;&iecy;&lcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;.</span></p> </li> <li> <p><span data-i18n="03a4e3efd04b732e3007be7d938cd36a7179d44ce5b895e512f2f21f7ea0e23b/ab" data-source="A mechanism for the server to omit such unwanted objects from packfiles sent to the client." onmousemove="i18n(this)">&Mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy;, &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&yucy;&shchcy;&icy;&jcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ucy; &icy;&scy;&kcy;&lcy;&yucy;&chcy;&acy;&tcy;&softcy; &tcy;&acy;&kcy;&icy;&iecy; &ncy;&iecy;&zhcy;&iecy;&lcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &icy;&zcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&khcy; &fcy;&acy;&jcy;&lcy;&ocy;&vcy;, &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&lcy;&yacy;&iecy;&mcy;&ycy;&khcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy;.</span></p> </li> <li> <p><span data-i18n="c209481d38015f019251081aeeebb2c899e84b8fb4c55237f722187d1a46631a/9e" data-source="A mechanism for the client to gracefully handle missing objects (that were previously omitted by the server)." onmousemove="i18n(this)">&Mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy;, &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&yucy;&shchcy;&icy;&jcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy; &kcy;&ocy;&rcy;&rcy;&iecy;&kcy;&tcy;&ncy;&ocy; &ocy;&bcy;&rcy;&acy;&bcy;&acy;&tcy;&ycy;&vcy;&acy;&tcy;&softcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; (&kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &rcy;&acy;&ncy;&iecy;&iecy; &bcy;&ycy;&lcy;&icy; &pcy;&rcy;&ocy;&pcy;&ucy;&shchcy;&iecy;&ncy;&ycy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy;).</span></p> </li> <li> <p><span data-i18n="5cd414982ed2b86827b95d56ef3d55d08d882f901caf292933cf1adb9388a299/df" data-source="A mechanism for the client to backfill missing objects as needed." onmousemove="i18n(this)">&Mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy;, &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&yucy;&shchcy;&icy;&jcy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy; &zcy;&acy;&pcy;&ocy;&lcy;&ncy;&yacy;&tcy;&softcy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &pcy;&ocy; &mcy;&iecy;&rcy;&iecy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy;&scy;&tcy;&icy;.</span></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_design_details"><span data-i18n="beb98c82fe6f7739b8d9178c030095debc8587cd3c58ff98be847b6c875e2d4c/84" data-source="Design details" onmousemove="i18n(this)">Design details</span></h2> <div> <div> <ul> <li> <p><span data-i18n="452ddb781bc0bd4fd7a99a4817734bc801655ddae1f328a50425020ee83579a0/02" data-source="A new pack-protocol capability &amp;quot;filter&amp;quot; is added to the fetch-pack and upload-pack negotiation." onmousemove="i18n(this)">&Vcy; &scy;&ocy;&gcy;&lcy;&acy;&scy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; fetch-pack &icy; upload-pack &dcy;&ocy;&bcy;&acy;&vcy;&lcy;&iecy;&ncy;&acy; &ZeroWidthSpace;&ZeroWidthSpace;&ncy;&ocy;&vcy;&acy;&yacy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&softcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ocy;&gcy;&ocy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy;&acy;  &quot;filter&quot; .</span></p> <p><span data-i18n="18637b902c4327f945639cac5aeeb94b060371c40d3b2ee83e5c1a4fd95476a7/67" data-source="This uses the existing capability discovery mechanism. See &amp;quot;filter&amp;quot; in &lt;a href=&quot;gitprotocol-pack&quot;&gt;gitprotocol-pack[5]&lt;/a&gt;." onmousemove="i18n(this)">&Pcy;&rcy;&icy; &ecy;&tcy;&ocy;&mcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&jcy; &mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy; &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&iecy;&ncy;&icy;&yacy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&iecy;&jcy;. &Scy;&mcy;.  &quot;filter&quot;  &vcy;  <a href="gitprotocol-pack.html">gitprotocol-pack[5]</a> .</span></p> </li> <li> <p><span data-i18n="e86b1c28c2fa2f2f8a4b34bf412460c44528182774a90d14d02e29644d431feb/93" data-source="Clients pass a &amp;quot;filter-spec&amp;quot; to clone and fetch which is passed to the server to request filtering during packfile construction." onmousemove="i18n(this)">&Kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ycy; &pcy;&iecy;&rcy;&iecy;&dcy;&acy;&yucy;&tcy;  &quot;filter-spec&quot;  &dcy;&lcy;&yacy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &pcy;&iecy;&rcy;&iecy;&dcy;&acy;&iecy;&tcy;&scy;&yacy; &ncy;&acy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy; &dcy;&lcy;&yacy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&acy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&acy;&tscy;&icy;&icy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&yacy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ocy;&gcy;&ocy; &fcy;&acy;&jcy;&lcy;&acy;.</span></p> <p><span data-i18n="b69999acd64879560e541f1b227505b2fe4c03e35b439a0eb184f6f58f75cf1f/da" data-source="There are various filters available to accommodate different situations. See &amp;quot;--filter=&amp;lt;filter-spec&amp;gt;&amp;quot; in Documentation/rev-list-options.txt." onmousemove="i18n(this)">&Scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&yucy;&tcy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&ncy;&ycy;&iecy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&ycy; &dcy;&lcy;&yacy; &rcy;&acy;&zcy;&ncy;&ycy;&khcy; &scy;&icy;&tcy;&ucy;&acy;&tscy;&icy;&jcy;. &Scy;&mcy;.  &quot;--filter=&lt;filter-spec&gt;&quot;  &vcy; Documentation/rev-list-options.txt.</span></p> </li> <li> <p><span data-i18n="e5c1a8a4741e70fa1a4978bf991b673f2709ac1960708557f4767e155275d008/ca" data-source="On the server pack-objects applies the requested filter-spec as it creates &amp;quot;filtered&amp;quot; packfiles for the client." onmousemove="i18n(this)">&Kcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy; &pcy;&rcy;&icy;&mcy;&iecy;&ncy;&yacy;&iecy;&tcy;&scy;&yacy; &zcy;&acy;&pcy;&rcy;&ocy;&shcy;&iecy;&ncy;&ncy;&acy;&yacy; &scy;&pcy;&iecy;&tscy;&icy;&fcy;&icy;&kcy;&acy;&tscy;&icy;&yacy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&acy; &pcy;&rcy;&icy; &scy;&ocy;&zcy;&dcy;&acy;&ncy;&icy;&icy; &fcy;&acy;&jcy;&lcy;&ocy;&vcy; &pcy;&acy;&kcy;&iecy;&tcy;&acy;  &quot;filtered&quot;  &dcy;&lcy;&yacy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy;.</span></p> <p><span data-i18n="e6fefe0d28135da25a6dd16a37f418d608a90ba3179621bc8886ea670adce4c2/d8" data-source="These filtered packfiles are &lt;strong&gt;incomplete&lt;/strong&gt; in the traditional sense because they may contain objects that reference objects not contained in the packfile and that the client doesn&amp;rsquo;t already have. For example, the filtered packfile may contain trees or tags that reference missing blobs or commits that reference missing trees." onmousemove="i18n(this)">&Ecy;&tcy;&icy; &ocy;&tcy;&fcy;&icy;&lcy;&softcy;&tcy;&rcy;&ocy;&vcy;&acy;&ncy;&ncy;&ycy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&iecy; &fcy;&acy;&jcy;&lcy;&ycy; &yacy;&vcy;&lcy;&yacy;&yucy;&tcy;&scy;&yacy; &ncy;&iecy;&pcy;&ocy;&lcy;&ncy;&ycy;&mcy;&icy; &vcy; &tcy;&rcy;&acy;&dcy;&icy;&tscy;&icy;&ocy;&ncy;&ncy;&ocy;&mcy; &scy;&mcy;&ycy;&scy;&lcy;&iecy;, &pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &ocy;&ncy;&icy; &mcy;&ocy;&gcy;&ucy;&tcy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&tcy;&softcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &scy;&scy;&ycy;&lcy;&acy;&yucy;&shchcy;&icy;&iecy;&scy;&yacy; &ncy;&acy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &ncy;&iecy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&shchcy;&icy;&iecy;&scy;&yacy; &vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ocy;&mcy; &fcy;&acy;&jcy;&lcy;&iecy; &icy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&khcy; &iecy;&shchcy;&iecy; &ncy;&iecy;&tcy; &ucy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&acy;. &Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &ocy;&tcy;&fcy;&icy;&lcy;&softcy;&tcy;&rcy;&ocy;&vcy;&acy;&ncy;&ncy;&ycy;&jcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&acy;&tcy;&softcy; &dcy;&iecy;&rcy;&iecy;&vcy;&softcy;&yacy; &icy;&lcy;&icy; &tcy;&iecy;&gcy;&icy;, &scy;&scy;&ycy;&lcy;&acy;&yucy;&shchcy;&icy;&iecy;&scy;&yacy; &ncy;&acy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&iecy; BLOB-&ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &icy;&lcy;&icy; &fcy;&icy;&kcy;&scy;&acy;&tscy;&icy;&icy;, &scy;&scy;&ycy;&lcy;&acy;&yucy;&shchcy;&icy;&iecy;&scy;&yacy; &ncy;&acy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&iecy; &dcy;&iecy;&rcy;&iecy;&vcy;&softcy;&yacy;.</span></p> </li> <li> <p><span data-i18n="c5fd55f9d0641d91b40a954634286712dc29ee9f7d38b64ece40c7c977f12bd2/9e" data-source="On the client these incomplete packfiles are marked as &amp;quot;promisor packfiles&amp;quot; and treated differently by various commands." onmousemove="i18n(this)">&Ncy;&acy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&iecy; &ecy;&tcy;&icy; &ncy;&iecy;&pcy;&ocy;&lcy;&ncy;&ycy;&iecy; &fcy;&acy;&jcy;&lcy;&ycy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &pcy;&ocy;&mcy;&iecy;&chcy;&acy;&yucy;&tcy;&scy;&yacy; &kcy;&acy;&kcy;  &quot;promisor packfiles&quot;  &icy; &ocy;&bcy;&rcy;&acy;&bcy;&acy;&tcy;&ycy;&vcy;&acy;&yucy;&tcy;&scy;&yacy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&ncy;&ycy;&mcy;&icy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&acy;&mcy;&icy; &pcy;&ocy;-&rcy;&acy;&zcy;&ncy;&ocy;&mcy;&ucy;.</span></p> </li> <li> <p><span data-i18n="dad34359f034cdf75ab16b1ca68f58b5b6cad36fc35bc0b2fbe26978723a60e1/32" data-source="On the client a repository extension is added to the local config to prevent older versions of git from failing mid-operation because of missing objects that they cannot handle. See &amp;quot;extensions.partialClone&amp;quot; in Documentation/technical/repository-version.txt&amp;quot;" onmousemove="i18n(this)">&Ncy;&acy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&iecy; &vcy; &lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ucy;&yucy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&yucy; &dcy;&ocy;&bcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &rcy;&acy;&scy;&shcy;&icy;&rcy;&iecy;&ncy;&icy;&iecy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;, &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&rcy;&iecy;&dcy;&ocy;&tcy;&vcy;&rcy;&acy;&tcy;&icy;&tcy;&softcy; &scy;&bcy;&ocy;&jcy; &scy;&tcy;&acy;&rcy;&ycy;&khcy; &vcy;&iecy;&rcy;&scy;&icy;&jcy;  git  &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &rcy;&acy;&bcy;&ocy;&tcy;&ycy; &icy;&zcy;-&zcy;&acy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&icy;&yacy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;, &scy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&mcy;&icy; &ocy;&ncy;&icy; &ncy;&iecy; &mcy;&ocy;&gcy;&ucy;&tcy; &scy;&pcy;&rcy;&acy;&vcy;&icy;&tcy;&softcy;&scy;&yacy;. &Scy;&mcy;.  &quot;extensions.partialClone&quot;  &vcy; Documentation/technical/repository-version.txt&raquo;.</span></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_handling_missing_objects"><span data-i18n="bd3f51be849a58fedf84a976e4f10c16396a666757527ee0252709f65d371cb2/f9" data-source="Handling missing objects" onmousemove="i18n(this)">&Ocy;&bcy;&rcy;&acy;&bcy;&ocy;&tcy;&kcy;&acy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;</span></h2> <div> <div> <ul> <li> <p><span data-i18n="e7067bfe6c1ff0f804aa4703040533f822f5cdf8ff1b2bb1b2d9045304560188/dd" data-source="An object may be missing due to a partial clone or fetch, or missing due to repository corruption. To differentiate these cases, the local repository specially indicates such filtered packfiles obtained from promisor remotes as &amp;quot;promisor packfiles&amp;quot;." onmousemove="i18n(this)">&Ocy;&bcy;&hardcy;&iecy;&kcy;&tcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ocy;&vcy;&acy;&tcy;&softcy; &icy;&zcy;-&zcy;&acy; &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &icy;&lcy;&icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy; &icy;&lcy;&icy; &icy;&zcy;-&zcy;&acy; &pcy;&ocy;&vcy;&rcy;&iecy;&zhcy;&dcy;&iecy;&ncy;&icy;&yacy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;. &CHcy;&tcy;&ocy;&bcy;&ycy; &rcy;&acy;&zcy;&lcy;&icy;&chcy;&acy;&tcy;&softcy; &ecy;&tcy;&icy; &scy;&lcy;&ucy;&chcy;&acy;&icy;, &vcy; &lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ocy;&mcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy; &tcy;&acy;&kcy;&icy;&iecy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&ocy;&vcy;&acy;&ncy;&ncy;&ycy;&iecy; &pcy;&acy;&kcy;&fcy;&acy;&jcy;&lcy;&ycy;, &pcy;&ocy;&lcy;&ucy;&chcy;&iecy;&ncy;&ncy;&ycy;&iecy; &scy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&khcy; &pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ocy;&vcy;, &scy;&pcy;&iecy;&tscy;&icy;&acy;&lcy;&softcy;&ncy;&ocy; &ocy;&bcy;&ocy;&zcy;&ncy;&acy;&chcy;&acy;&yucy;&tcy;&scy;&yacy; &kcy;&acy;&kcy;  &quot;promisor packfiles&quot; .</span></p> <p><span data-i18n="6590643bae645583c064d80267c9aca6505f517a65fe5e9edf4bf41c7b71fc9b/6c" data-source="These promisor packfiles consist of a &amp;quot;&amp;lt;name&amp;gt;.promisor&amp;quot; file with arbitrary contents (like the &amp;quot;&amp;lt;name&amp;gt;.keep&amp;quot; files), in addition to their &amp;quot;&amp;lt;name&amp;gt;.pack&amp;quot; and &amp;quot;&amp;lt;name&amp;gt;.idx&amp;quot; files." onmousemove="i18n(this)">&Ecy;&tcy;&icy; &fcy;&acy;&jcy;&lcy;&ycy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &ocy;&bcy;&iecy;&shchcy;&acy;&ncy;&icy;&yacy; &scy;&ocy;&scy;&tcy;&ocy;&yacy;&tcy; &icy;&zcy; &fcy;&acy;&jcy;&lcy;&acy;  &quot;&lt;name&gt;.promisor&quot;  &scy; &pcy;&rcy;&ocy;&icy;&zcy;&vcy;&ocy;&lcy;&softcy;&ncy;&ycy;&mcy; &scy;&ocy;&dcy;&iecy;&rcy;&zhcy;&icy;&mcy;&ycy;&mcy; (&ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &fcy;&acy;&jcy;&lcy;&ycy;  &quot;&lt;name&gt;.keep&quot; ) &vcy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&iecy;&ncy;&icy;&iecy; &kcy; &fcy;&acy;&jcy;&lcy;&acy;&mcy;  &quot;&lt;name&gt;.pack&quot;  &icy;  &quot;&lt;name&gt;.idx&quot; .</span></p> </li> <li> <p><span data-i18n="365f5055a90c81cead961889ce2cdbc3e0fc169b54e749d06989b3a4153891d1/eb" data-source="The local repository considers a &amp;quot;promisor object&amp;quot; to be an object that it knows (to the best of its ability) that promisor remotes have promised that they have, either because the local repository has that object in one of its promisor packfiles, or because another promisor object refers to it." onmousemove="i18n(this)">&Lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ycy;&jcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&jcy; &scy;&chcy;&icy;&tcy;&acy;&iecy;&tcy;  &quot;promisor object&quot;  &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&mcy;, &ocy; &kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&mcy; &ocy;&ncy; &zcy;&ncy;&acy;&iecy;&tcy; (&vcy; &mcy;&iecy;&rcy;&ucy; &scy;&vcy;&ocy;&icy;&khcy; &vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;&scy;&tcy;&iecy;&jcy;), &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&iecy; &pcy;&ocy;&scy;&tcy;&acy;&vcy;&shchcy;&icy;&kcy;&icy; &ocy;&bcy;&iecy;&shchcy;&acy;&lcy;&icy; &icy;&mcy;&iecy;&tcy;&softcy;, &lcy;&icy;&bcy;&ocy; &pcy;&ocy;&tcy;&ocy;&mcy;&ucy;, &chcy;&tcy;&ocy; &lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ycy;&jcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&jcy; &icy;&mcy;&iecy;&iecy;&tcy; &ecy;&tcy;&ocy;&tcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy; &vcy; &ocy;&dcy;&ncy;&ocy;&mcy; &icy;&zcy; &scy;&vcy;&ocy;&icy;&khcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&khcy; &fcy;&acy;&jcy;&lcy;&ocy;&vcy;, &lcy;&icy;&bcy;&ocy; &pcy;&ocy;&tcy;&ocy;&mcy;&ucy;, &chcy;&tcy;&ocy; &dcy;&rcy;&ucy;&gcy;&ocy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;-&pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy; &scy;&scy;&ycy;&lcy;&acy;&iecy;&tcy;&scy;&yacy; &ncy;&acy; &ecy;&tcy;&ocy;.</span></p> <p><span data-i18n="43a327d045e8d155ab459213d1f594fcc1cc775400d40c92a64a0b780e9998b9/b2" data-source="When Git encounters a missing object, Git can see if it is a promisor object and handle it appropriately. If not, Git can report a corruption." onmousemove="i18n(this)">&Kcy;&ocy;&gcy;&dcy;&acy;  Git  &ocy;&bcy;&ncy;&acy;&rcy;&ucy;&zhcy;&icy;&vcy;&acy;&iecy;&tcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;,  Git  &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&icy;&tcy;&softcy;, &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &lcy;&icy; &ecy;&tcy;&ocy; &ocy;&bcy;&iecy;&shchcy;&acy;&ncy;&ncy;&ycy;&mcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&mcy;, &icy; &ocy;&bcy;&rcy;&acy;&bcy;&ocy;&tcy;&acy;&tcy;&softcy; &iecy;&gcy;&ocy; &scy;&ocy;&ocy;&tcy;&vcy;&iecy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&mcy; &ocy;&bcy;&rcy;&acy;&zcy;&ocy;&mcy;. &Vcy; &pcy;&rcy;&ocy;&tcy;&icy;&vcy;&ncy;&ocy;&mcy; &scy;&lcy;&ucy;&chcy;&acy;&iecy;  Git  &mcy;&ocy;&zhcy;&iecy;&tcy; &scy;&ocy;&ocy;&bcy;&shchcy;&icy;&tcy;&softcy; &ocy; &pcy;&ocy;&vcy;&rcy;&iecy;&zhcy;&dcy;&iecy;&ncy;&icy;&icy;.</span></p> <p><span data-i18n="28e9c51ea0d80a3cfa73b495662884cb62f72d7a4914226c1a568f4a42a73966/98" data-source="This means that there is no need for the client to explicitly maintain an expensive-to-modify list of missing objects.[a]" onmousemove="i18n(this)">&Ecy;&tcy;&ocy; &ocy;&zcy;&ncy;&acy;&chcy;&acy;&iecy;&tcy;, &chcy;&tcy;&ocy; &kcy;&lcy;&icy;&iecy;&ncy;&tcy;&ucy; &ncy;&iecy;&tcy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy;&scy;&tcy;&icy; &yacy;&vcy;&ncy;&ocy; &pcy;&ocy;&dcy;&dcy;&iecy;&rcy;&zhcy;&icy;&vcy;&acy;&tcy;&softcy; &dcy;&ocy;&rcy;&ocy;&gcy;&ocy;&scy;&tcy;&ocy;&yacy;&shchcy;&icy;&jcy; &dcy;&lcy;&yacy; &icy;&zcy;&mcy;&iecy;&ncy;&iecy;&ncy;&icy;&yacy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.[a]</span></p> </li> <li> <p><span data-i18n="ae4628a831b8c2b7dda1c96810efefe7e0575b3236b646483c1225ab2b9f42e9/51" data-source="Since almost all Git code currently expects any referenced object to be present locally and because we do not want to force every command to do a dry-run first, a fallback mechanism is added to allow Git to attempt to dynamically fetch missing objects from promisor remotes." onmousemove="i18n(this)">&Pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &pcy;&ocy;&chcy;&tcy;&icy; &vcy;&iecy;&scy;&softcy; &kcy;&ocy;&dcy;  Git  &vcy; &ncy;&acy;&scy;&tcy;&ocy;&yacy;&shchcy;&iecy;&iecy; &vcy;&rcy;&iecy;&mcy;&yacy; &ocy;&zhcy;&icy;&dcy;&acy;&iecy;&tcy;, &chcy;&tcy;&ocy; &lcy;&yucy;&bcy;&ocy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;, &ncy;&acy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &scy;&scy;&ycy;&lcy;&acy;&yucy;&tcy;&scy;&yacy;, &bcy;&ucy;&dcy;&iecy;&tcy; &pcy;&rcy;&icy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ocy;&vcy;&acy;&tcy;&softcy; &lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ocy;, &icy; &pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &mcy;&ycy; &ncy;&iecy; &khcy;&ocy;&tcy;&icy;&mcy; &zcy;&acy;&scy;&tcy;&acy;&vcy;&lcy;&yacy;&tcy;&softcy; &kcy;&acy;&zhcy;&dcy;&ucy;&yucy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ucy; &scy;&ncy;&acy;&chcy;&acy;&lcy;&acy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&yacy;&tcy;&softcy; &pcy;&rcy;&ocy;&bcy;&ncy;&ycy;&jcy; &pcy;&rcy;&ocy;&gcy;&ocy;&ncy;, &dcy;&ocy;&bcy;&acy;&vcy;&lcy;&iecy;&ncy; &rcy;&iecy;&zcy;&iecy;&rcy;&vcy;&ncy;&ycy;&jcy; &mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy;, &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&yucy;&shchcy;&icy;&jcy;  Git  &pcy;&ycy;&tcy;&acy;&tcy;&softcy;&scy;&yacy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&icy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&tcy;&softcy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &scy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&khcy; &ucy;&scy;&tcy;&rcy;&ocy;&jcy;&scy;&tcy;&vcy;-&pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ocy;&vcy;. .</span></p> <p><span data-i18n="9ff5eb937b2be80b1c243f4c1674e747e680bed70c8b318f181db81c6985e8c2/5d" data-source="When the normal object lookup fails to find an object, Git invokes promisor_remote_get_direct() to try to get the object from a promisor remote and then retry the object lookup. This allows objects to be &amp;quot;faulted in&amp;quot; without complicated prediction algorithms." onmousemove="i18n(this)">&Kcy;&ocy;&gcy;&dcy;&acy; &ocy;&bcy;&ycy;&chcy;&ncy;&ycy;&jcy; &pcy;&ocy;&icy;&scy;&kcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy; &ncy;&iecy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ncy;&acy;&jcy;&tcy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;,  Git  &vcy;&ycy;&zcy;&ycy;&vcy;&acy;&iecy;&tcy; promisor_remote_get_direct(), &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&ocy;&pcy;&ycy;&tcy;&acy;&tcy;&softcy;&scy;&yacy; &pcy;&ocy;&lcy;&ucy;&chcy;&icy;&tcy;&softcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy; &ocy;&tcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ocy;&gcy;&ocy; &pcy;&rcy;&ocy;&mcy;&icy;&zcy;&ocy;&rcy;&acy;, &acy; &zcy;&acy;&tcy;&iecy;&mcy; &pcy;&ocy;&vcy;&tcy;&ocy;&rcy;&icy;&tcy;&softcy; &pcy;&ocy;&icy;&scy;&kcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;. &Ecy;&tcy;&ocy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&iecy;&tcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;&mcy; &bcy;&ycy;&tcy;&softcy;  &quot;faulted in&quot;  &bcy;&iecy;&zcy; &scy;&lcy;&ocy;&zhcy;&ncy;&ycy;&khcy; &acy;&lcy;&gcy;&ocy;&rcy;&icy;&tcy;&mcy;&ocy;&vcy; &pcy;&rcy;&ocy;&gcy;&ncy;&ocy;&zcy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;.</span></p> <p><span data-i18n="a8cc666033534a76e079e2af3ec562c379d8e4a2882575e996ceeb1dfe069907/43" data-source="For efficiency reasons, no check as to whether the missing object is actually a promisor object is performed." onmousemove="i18n(this)">&Pcy;&ocy; &scy;&ocy;&ocy;&bcy;&rcy;&acy;&zhcy;&iecy;&ncy;&icy;&yacy;&mcy; &ecy;&fcy;&fcy;&iecy;&kcy;&tcy;&icy;&vcy;&ncy;&ocy;&scy;&tcy;&icy; &pcy;&rcy;&ocy;&vcy;&iecy;&rcy;&kcy;&acy; &tcy;&ocy;&gcy;&ocy;, &yacy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &lcy;&icy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy; &dcy;&iecy;&jcy;&scy;&tcy;&vcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&mcy;-&ocy;&bcy;&iecy;&shchcy;&acy;&tcy;&iecy;&lcy;&iecy;&mcy;, &ncy;&iecy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&yacy;&iecy;&tcy;&scy;&yacy;.</span></p> <p><span data-i18n="15f2891acd71cb5ddc0ac6a1cdff6b92011a0ce35b5bf3b741815cb776462b24/22" data-source="Dynamic object fetching tends to be slow as objects are fetched one at a time." onmousemove="i18n(this)">&Icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &ocy;&bcy;&ycy;&chcy;&ncy;&ocy; &pcy;&rcy;&ocy;&icy;&scy;&khcy;&ocy;&dcy;&icy;&tcy; &mcy;&iecy;&dcy;&lcy;&iecy;&ncy;&ncy;&ocy;, &pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &icy;&zcy;&vcy;&lcy;&iecy;&kcy;&acy;&yucy;&tcy;&scy;&yacy; &pcy;&ocy; &ocy;&dcy;&ncy;&ocy;&mcy;&ucy;.</span></p> </li> <li> <p><span data-i18n="79009f4c859549e209b9b777452e02ae6611c3fa303ea321d07761eb3f5d8bc4/35" data-source="&lt;code&gt;checkout&lt;/code&gt; (and any other command using &lt;code&gt;unpack-trees&lt;/code&gt;) has been taught to bulk pre-fetch all required missing blobs in a single batch." onmousemove="i18n(this)"><code>checkout</code>  (&icy; &lcy;&yucy;&bcy;&acy;&yacy; &dcy;&rcy;&ucy;&gcy;&acy;&yacy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&acy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yucy;&shchcy;&acy;&yacy;  <code>unpack-trees</code>  ) &ocy;&bcy;&ucy;&chcy;&iecy;&ncy;&acy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&iecy; &vcy;&scy;&iecy;&khcy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&khcy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&khcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &vcy; &ocy;&dcy;&ncy;&ocy;&mcy; &pcy;&acy;&kcy;&iecy;&tcy;&iecy;.</span></p> </li> <li> <p><span data-i18n="befe06df1cad5f6be2b63cf021af5cacca6740590238384809c4b391a8f6c2ed/c1" data-source="&lt;code&gt;rev-list&lt;/code&gt; has been taught to print missing objects." onmousemove="i18n(this)"><code>rev-list</code>  &ocy;&bcy;&ucy;&chcy;&iecy;&ncy; &pcy;&iecy;&chcy;&acy;&tcy;&acy;&tcy;&softcy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;.</span></p> <p><span data-i18n="a442a6f60b6d31a8be7387c8adf458aa1a0b2909fa748f3f495517507bb1a7f4/2e" data-source="This can be used by other commands to bulk prefetch objects. For example, a &amp;quot;git log -p A..B&amp;quot; may internally want to first do something like &amp;quot;git rev-list --objects --quiet --missing=print A..B&amp;quot; and prefetch those objects in bulk." onmousemove="i18n(this)">&Ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy;&scy;&yacy; &dcy;&rcy;&ucy;&gcy;&icy;&mcy;&icy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&acy;&mcy;&icy; &dcy;&lcy;&yacy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;. &Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;,  &quot;git log -p A..B&quot;  &mcy;&ocy;&zhcy;&iecy;&tcy; &vcy;&ncy;&ucy;&tcy;&rcy;&iecy;&ncy;&ncy;&iecy; &zcy;&acy;&khcy;&ocy;&tcy;&iecy;&tcy;&softcy; &scy;&ncy;&acy;&chcy;&acy;&lcy;&acy; &scy;&dcy;&iecy;&lcy;&acy;&tcy;&softcy; &chcy;&tcy;&ocy;-&tcy;&ocy; &vcy;&rcy;&ocy;&dcy;&iecy;  &quot;git rev-list --objects --quiet --missing=print A..B&quot;  &icy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&softcy; &pcy;&rcy;&iecy;&dcy;&vcy;&acy;&rcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ucy;&yucy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&ucy; &ecy;&tcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &vcy; &bcy;&ocy;&lcy;&softcy;&shcy;&ocy;&mcy; &ocy;&bcy;&hardcy;&iecy;&mcy;&iecy;.</span></p> </li> <li> <p><span data-i18n="991617187a92494e202fa1ad37dee01647a12348f333e2e96eb0ae49bd945ed3/69" data-source="&lt;code&gt;fsck&lt;/code&gt; has been updated to be fully aware of promisor objects." onmousemove="i18n(this)"><code>fsck</code>  &bcy;&ycy;&lcy; &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;, &chcy;&tcy;&ocy;&bcy;&ycy; &pcy;&ocy;&lcy;&ncy;&ocy;&scy;&tcy;&softcy;&yucy; &ucy;&chcy;&icy;&tcy;&ycy;&vcy;&acy;&tcy;&softcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;-&ocy;&bcy;&iecy;&shchcy;&acy;&tcy;&iecy;&lcy;&icy;.</span></p> </li> <li> <p><span data-i18n="6b5caa2b82a8bf4f8e368a58693d4f3ead7caed89ed834cf5bfcc91816593421/9d" data-source="&lt;code&gt;repack&lt;/code&gt; in GC has been updated to not touch promisor packfiles at all, and to only repack other objects." onmousemove="i18n(this)"><code>repack</code>  &vcy; GC &bcy;&ycy;&lcy; &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;, &chcy;&tcy;&ocy;&bcy;&ycy; &vcy;&ocy;&ocy;&bcy;&shchcy;&iecy; &ncy;&iecy; &tcy;&rcy;&ocy;&gcy;&acy;&tcy;&softcy; &fcy;&acy;&jcy;&lcy;&ycy; &pcy;&acy;&kcy;&iecy;&tcy;&ocy;&vcy; &ocy;&bcy;&iecy;&shchcy;&acy;&ncy;&icy;&jcy; &icy; &pcy;&iecy;&rcy;&iecy;&ucy;&pcy;&acy;&kcy;&ocy;&vcy;&ycy;&vcy;&acy;&tcy;&softcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &dcy;&rcy;&ucy;&gcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;.</span></p> </li> <li> <p><span data-i18n="57994dbe81e5c56c5725ea375a8cd93202fe31675ae06c270a3ef5306acb2ab4/bd" data-source="The global variable &amp;quot;fetch_if_missing&amp;quot; is used to control whether an object lookup will attempt to dynamically fetch a missing object or report an error." onmousemove="i18n(this)">&Gcy;&lcy;&ocy;&bcy;&acy;&lcy;&softcy;&ncy;&acy;&yacy; &pcy;&iecy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&acy;&yacy;  &quot;fetch_if_missing&quot;  &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &dcy;&lcy;&yacy; &ucy;&pcy;&rcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy; &tcy;&iecy;&mcy;, &bcy;&ucy;&dcy;&iecy;&tcy; &lcy;&icy; &pcy;&ocy;&icy;&scy;&kcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy; &pcy;&ycy;&tcy;&acy;&tcy;&softcy;&scy;&yacy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&icy; &pcy;&ocy;&lcy;&ucy;&chcy;&icy;&tcy;&softcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy; &icy;&lcy;&icy; &scy;&ocy;&ocy;&bcy;&shchcy;&icy;&tcy;&softcy; &ocy;&bcy; &ocy;&shcy;&icy;&bcy;&kcy;&iecy;.</span></p> <p><span data-i18n="24ac65f7e18b19a29f2e1dccaa39d8019b513b87d8baaf23d74a2ba35e16db86/e0" data-source="We are not happy with this global variable and would like to remove it, but that requires significant refactoring of the object code to pass an additional flag." onmousemove="i18n(this)">&Ncy;&acy;&scy; &ncy;&iecy; &ucy;&scy;&tcy;&rcy;&acy;&icy;&vcy;&acy;&iecy;&tcy; &ecy;&tcy;&acy; &gcy;&lcy;&ocy;&bcy;&acy;&lcy;&softcy;&ncy;&acy;&yacy; &pcy;&iecy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&acy;&yacy;, &icy; &mcy;&ycy; &khcy;&ocy;&tcy;&iecy;&lcy;&icy; &bcy;&ycy; &iecy;&iecy; &ucy;&dcy;&acy;&lcy;&icy;&tcy;&softcy;, &ncy;&ocy; &ecy;&tcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ucy;&iecy;&tcy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&iecy;&ncy;&ncy;&ocy;&gcy;&ocy; &rcy;&iecy;&fcy;&acy;&kcy;&tcy;&ocy;&rcy;&icy;&ncy;&gcy;&acy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ncy;&ocy;&gcy;&ocy; &kcy;&ocy;&dcy;&acy; &dcy;&lcy;&yacy; &pcy;&iecy;&rcy;&iecy;&dcy;&acy;&chcy;&icy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&gcy;&ocy; &fcy;&lcy;&acy;&gcy;&acy;.</span></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_fetching_missing_objects"><span data-i18n="222ed427b29102bf1e9e79281eafa889be1c209b8340f2ee28c079868303d7e9/97" data-source="Fetching missing objects" onmousemove="i18n(this)">&Pcy;&ocy;&lcy;&ucy;&chcy;&iecy;&ncy;&icy;&iecy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;</span></h2> <div> <div> <ul> <li> <p><span data-i18n="6cb66d26e319be045e544f8d79f13118e45d871e78bfe64daa947375f1d62d1d/3a" data-source="Fetching of objects is done by invoking a &amp;quot;git fetch&amp;quot; subprocess." onmousemove="i18n(this)">&Icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &ocy;&scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&lcy;&yacy;&iecy;&tcy;&scy;&yacy; &pcy;&ucy;&tcy;&iecy;&mcy; &vcy;&ycy;&zcy;&ocy;&vcy;&acy; &pcy;&ocy;&dcy;&pcy;&rcy;&ocy;&tscy;&iecy;&scy;&scy;&acy;  &quot;git fetch&quot; .</span></p> </li> <li> <p><span data-i18n="45ebb47dc73e97204108b080d95c97afb2a93f7eabf8486677211cf06b18017c/0a" data-source="The local repository sends a request with the hashes of all requested objects, and does not perform any packfile negotiation. It then receives a packfile." onmousemove="i18n(this)">&Lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ycy;&jcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&jcy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&lcy;&yacy;&iecy;&tcy; &zcy;&acy;&pcy;&rcy;&ocy;&scy; &scy; &khcy;&iecy;&shcy;&acy;&mcy;&icy; &vcy;&scy;&iecy;&khcy; &zcy;&acy;&pcy;&rcy;&ocy;&shcy;&iecy;&ncy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &icy; &ncy;&iecy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&yacy;&iecy;&tcy; &ncy;&icy;&kcy;&acy;&kcy;&icy;&khcy; &scy;&ocy;&gcy;&lcy;&acy;&scy;&ocy;&vcy;&acy;&ncy;&icy;&jcy; &scy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&mcy;&icy; &fcy;&acy;&jcy;&lcy;&acy;&mcy;&icy;. &Zcy;&acy;&tcy;&iecy;&mcy; &ocy;&ncy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&iecy;&tcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy;.</span></p> </li> <li> <p><span data-i18n="a41d49e6f0ba6ba217921ab8a48aa6b5c6fdd97d6faaeb89681aaf4f72bf0977/d2" data-source="Because we are reusing the existing fetch mechanism, fetching currently fetches all objects referred to by the requested objects, even though they are not necessary." onmousemove="i18n(this)">&Pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &mcy;&ycy; &pcy;&ocy;&vcy;&tcy;&ocy;&rcy;&ncy;&ocy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&mcy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&jcy; &mcy;&iecy;&khcy;&acy;&ncy;&icy;&zcy;&mcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy;, &vcy; &ncy;&acy;&scy;&tcy;&ocy;&yacy;&shchcy;&iecy;&iecy; &vcy;&rcy;&iecy;&mcy;&yacy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&acy; &icy;&zcy;&vcy;&lcy;&iecy;&kcy;&acy;&iecy;&tcy; &vcy;&scy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &ncy;&acy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &scy;&scy;&ycy;&lcy;&acy;&yucy;&tcy;&scy;&yacy; &zcy;&acy;&pcy;&rcy;&ocy;&shcy;&iecy;&ncy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &dcy;&acy;&zhcy;&iecy; &iecy;&scy;&lcy;&icy; &ocy;&ncy;&icy; &ncy;&iecy; &yacy;&vcy;&lcy;&yacy;&yucy;&tcy;&scy;&yacy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ycy;&mcy;&icy;.</span></p> </li> <li> <p><span data-i18n="8e3699855fd8f146032e796b08a1347a0c8983bf76a8a8b83e4c99151f69a7c1/b4" data-source="Fetching with &lt;code&gt;--refetch&lt;/code&gt; will request a complete new filtered packfile from the remote, which can be used to change a filter without needing to dynamically fetch missing objects." onmousemove="i18n(this)">&Pcy;&rcy;&icy; &icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&icy; &scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy;  <code>--refetch</code>  &scy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ocy;&gcy;&ocy; &ucy;&scy;&tcy;&rcy;&ocy;&jcy;&scy;&tcy;&vcy;&acy; &bcy;&ucy;&dcy;&iecy;&tcy; &zcy;&acy;&pcy;&rcy;&ocy;&shcy;&iecy;&ncy; &pcy;&ocy;&lcy;&ncy;&ocy;&scy;&tcy;&softcy;&yucy; &ncy;&ocy;&vcy;&ycy;&jcy; &ocy;&tcy;&fcy;&icy;&lcy;&softcy;&tcy;&rcy;&ocy;&vcy;&acy;&ncy;&ncy;&ycy;&jcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &mcy;&ocy;&zhcy;&ncy;&ocy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &dcy;&lcy;&yacy; &icy;&zcy;&mcy;&iecy;&ncy;&iecy;&ncy;&icy;&yacy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&acy; &bcy;&iecy;&zcy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy;&scy;&tcy;&icy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&gcy;&ocy; &icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&yacy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.</span></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_using_many_promisor_remotes"><span data-i18n="dcd8f8b00bb537bb03bc24ebc65d1b833294cdd9488785e798b723a1e5fe9273/e2" data-source="Using many promisor remotes" onmousemove="i18n(this)">&Icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &mcy;&ncy;&ocy;&gcy;&icy;&khcy; &pcy;&ucy;&lcy;&softcy;&tcy;&ocy;&vcy; Promisor</span></h2> <div> <p><span data-i18n="e61b923ca028fb1f855e5d13c901322893207f889c0458dabad24ba66c0b8c98/ae" data-source="Many promisor remotes can be configured and used." onmousemove="i18n(this)">&Mcy;&ncy;&ocy;&gcy;&icy;&iecy; &pcy;&ucy;&lcy;&softcy;&tcy;&ycy; Promisor &mcy;&ocy;&zhcy;&ncy;&ocy; &ncy;&acy;&scy;&tcy;&rcy;&ocy;&icy;&tcy;&softcy; &icy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy;.</span></p> <p><span data-i18n="9bf69f53b99190d4c555430408ae3a4377831e293b1a864f7c1f689ef56758e0/a8" data-source="This allows for example a user to have multiple geographically-close cache servers for fetching missing blobs while continuing to do filtered &lt;code&gt;git-fetch&lt;/code&gt; commands from the central server." onmousemove="i18n(this)">&Ecy;&tcy;&ocy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&iecy;&tcy;, &ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&yucy; &icy;&mcy;&iecy;&tcy;&softcy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ocy; &gcy;&iecy;&ocy;&gcy;&rcy;&acy;&fcy;&icy;&chcy;&iecy;&scy;&kcy;&icy; &bcy;&lcy;&icy;&zcy;&kcy;&icy;&khcy; &kcy;&ecy;&shcy;-&scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&vcy; &dcy;&lcy;&yacy; &icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&yacy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&khcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;, &pcy;&rcy;&ocy;&dcy;&ocy;&lcy;&zhcy;&acy;&yacy; &pcy;&rcy;&icy; &ecy;&tcy;&ocy;&mcy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&yacy;&tcy;&softcy; &ocy;&tcy;&fcy;&icy;&lcy;&softcy;&tcy;&rcy;&ocy;&vcy;&acy;&ncy;&ncy;&ycy;&iecy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ycy;  <code>git-fetch</code>  &scy; &tscy;&iecy;&ncy;&tcy;&rcy;&acy;&lcy;&softcy;&ncy;&ocy;&gcy;&ocy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;.</span></p> <p><span data-i18n="70fd0d736b07bc952355e75e6a0cd24713299fe850b5641742471f8d46249c77/73" data-source="When fetching objects, promisor remotes are tried one after the other until all the objects have been fetched." onmousemove="i18n(this)">&Pcy;&rcy;&icy; &icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&iecy; &pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ycy; &ocy;&pcy;&rcy;&ocy;&bcy;&ucy;&yucy;&tcy;&scy;&yacy; &ocy;&dcy;&icy;&ncy; &zcy;&acy; &dcy;&rcy;&ucy;&gcy;&icy;&mcy;, &pcy;&ocy;&kcy;&acy; &vcy;&scy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &ncy;&iecy; &bcy;&ucy;&dcy;&ucy;&tcy; &icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&ycy;.</span></p> <p><span data-i18n="80b1bae3bc61084476a6eb28012e9b131c19d5cb8f211b2cf4b69a54855436c5/29" data-source="Remotes that are considered &amp;quot;promisor&amp;quot; remotes are those specified by the following configuration variables:" onmousemove="i18n(this)">&Pcy;&ucy;&lcy;&softcy;&tcy;&ycy; &dcy;&icy;&scy;&tcy;&acy;&ncy;&tscy;&icy;&ocy;&ncy;&ncy;&ocy;&gcy;&ocy; &ucy;&pcy;&rcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &scy;&chcy;&icy;&tcy;&acy;&yucy;&tcy;&scy;&yacy; &pcy;&ucy;&lcy;&softcy;&tcy;&acy;&mcy;&icy;  &quot;promisor&quot; , &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&yacy;&yucy;&tcy;&scy;&yacy; &scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&icy;&mcy;&icy; &pcy;&iecy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&ycy;&mcy;&icy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;:</span></p> <div> <ul> <li> <p><code>extensions.partialClone = &lt;name&gt;</code></p> </li> <li> <p><code>remote.&lt;name&gt;.promisor = true</code></p> </li> <li> <p><code>remote.&lt;name&gt;.partialCloneFilter = ...</code></p> </li> </ul> </div> <p><span data-i18n="ea5a9dcb532aa58508fcda99d00fabe43110d1ce40de801ebfc531aab2c1e0dc/68" data-source="Only one promisor remote can be configured using the &lt;code&gt;extensions.partialClone&lt;/code&gt; config variable. This promisor remote will be the last one tried when fetching objects." onmousemove="i18n(this)">&Scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &pcy;&iecy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&ocy;&jcy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;  <code>extensions.partialClone</code>  &mcy;&ocy;&zhcy;&ncy;&ocy; &ncy;&acy;&scy;&tcy;&rcy;&ocy;&icy;&tcy;&softcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &ocy;&dcy;&icy;&ncy; &pcy;&ucy;&lcy;&softcy;&tcy; &dcy;&icy;&scy;&tcy;&acy;&ncy;&tscy;&icy;&ocy;&ncy;&ncy;&ocy;&gcy;&ocy; &ucy;&pcy;&rcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&yacy; Promisor. &Ecy;&tcy;&ocy;&tcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy; &bcy;&ucy;&dcy;&iecy;&tcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy;&scy;&yacy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ncy;&icy;&mcy; &pcy;&rcy;&icy; &icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.</span></p> <p><span data-i18n="9ffb845cc5a6881668a43e98050ce734c6ab1f534d13473930d42f6ce6c13b53/86" data-source="We decided to make it the last one we try, because it is likely that someone using many promisor remotes is doing so because the other promisor remotes are better for some reason (maybe they are closer or faster for some kind of objects) than the origin, and the origin is likely to be the remote specified by extensions.partialClone." onmousemove="i18n(this)">&Mcy;&ycy; &rcy;&iecy;&shcy;&icy;&lcy;&icy; &scy;&dcy;&iecy;&lcy;&acy;&tcy;&softcy; &iecy;&gcy;&ocy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ncy;&icy;&mcy;, &chcy;&tcy;&ocy; &pcy;&ocy;&pcy;&rcy;&ocy;&bcy;&ucy;&iecy;&mcy;, &pcy;&ocy;&tcy;&ocy;&mcy;&ucy; &chcy;&tcy;&ocy; &vcy;&pcy;&ocy;&lcy;&ncy;&iecy; &vcy;&iecy;&rcy;&ocy;&yacy;&tcy;&ncy;&ocy;, &chcy;&tcy;&ocy; &kcy;&tcy;&ocy;-&tcy;&ocy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&yucy;&shchcy;&icy;&jcy; &mcy;&ncy;&ocy;&gcy;&ocy; &pcy;&ucy;&lcy;&softcy;&tcy;&ocy;&vcy;-&pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ocy;&vcy;, &dcy;&iecy;&lcy;&acy;&iecy;&tcy; &ecy;&tcy;&ocy; &pcy;&ocy;&tcy;&ocy;&mcy;&ucy;, &chcy;&tcy;&ocy; &dcy;&rcy;&ucy;&gcy;&icy;&iecy; &pcy;&ucy;&lcy;&softcy;&tcy;&ycy;-&pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ycy; &pcy;&ocy; &kcy;&acy;&kcy;&ocy;&jcy;-&tcy;&ocy; &pcy;&rcy;&icy;&chcy;&icy;&ncy;&iecy; &lcy;&ucy;&chcy;&shcy;&iecy; (&vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;, &ocy;&ncy;&icy; &bcy;&lcy;&icy;&zhcy;&iecy; &icy;&lcy;&icy; &bcy;&ycy;&scy;&tcy;&rcy;&iecy;&iecy; &dcy;&lcy;&yacy; &kcy;&acy;&kcy;&icy;&khcy;-&tcy;&ocy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;), &chcy;&iecy;&mcy; &icy;&scy;&khcy;&ocy;&dcy;&ncy;&ycy;&jcy; , &acy; &icy;&scy;&tcy;&ocy;&chcy;&ncy;&icy;&kcy;&ocy;&mcy;, &scy;&kcy;&ocy;&rcy;&iecy;&iecy; &vcy;&scy;&iecy;&gcy;&ocy;, &bcy;&ucy;&dcy;&iecy;&tcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &kcy;&ocy;&mcy;&pcy;&softcy;&yucy;&tcy;&iecy;&rcy;, &ucy;&kcy;&acy;&zcy;&acy;&ncy;&ncy;&ycy;&jcy; &vcy; Extensions.partialClone.</span></p> <p><span data-i18n="4f77a49fcb608fd4971cf5793d77cf612bacd823146f863e40d8d369665d612c/b4" data-source="This justification is not very strong, but one choice had to be made, and anyway the long term plan should be to make the order somehow fully configurable." onmousemove="i18n(this)">&Ecy;&tcy;&ocy; &ocy;&bcy;&ocy;&scy;&ncy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &ncy;&iecy; &ocy;&chcy;&iecy;&ncy;&softcy; &scy;&icy;&lcy;&softcy;&ncy;&ocy;&iecy;, &ncy;&ocy; &ocy;&dcy;&icy;&ncy; &vcy;&ycy;&bcy;&ocy;&rcy; &ncy;&ucy;&zhcy;&ncy;&ocy; &bcy;&ycy;&lcy;&ocy; &scy;&dcy;&iecy;&lcy;&acy;&tcy;&softcy;, &icy; &vcy; &lcy;&yucy;&bcy;&ocy;&mcy; &scy;&lcy;&ucy;&chcy;&acy;&iecy; &dcy;&ocy;&lcy;&gcy;&ocy;&scy;&rcy;&ocy;&chcy;&ncy;&ycy;&jcy; &pcy;&lcy;&acy;&ncy; &dcy;&ocy;&lcy;&zhcy;&iecy;&ncy; &zcy;&acy;&kcy;&lcy;&yucy;&chcy;&acy;&tcy;&softcy;&scy;&yacy; &vcy; &tcy;&ocy;&mcy;, &chcy;&tcy;&ocy;&bcy;&ycy; &scy;&dcy;&iecy;&lcy;&acy;&tcy;&softcy; &zcy;&acy;&kcy;&acy;&zcy; &kcy;&acy;&kcy;&icy;&mcy;-&tcy;&ocy; &ocy;&bcy;&rcy;&acy;&zcy;&ocy;&mcy; &pcy;&ocy;&lcy;&ncy;&ocy;&scy;&tcy;&softcy;&yucy; &ncy;&acy;&scy;&tcy;&rcy;&acy;&icy;&vcy;&acy;&iecy;&mcy;&ycy;&mcy;.</span></p> <p><span data-i18n="42e6ec87e1fb8ee95a0986a9e9d58b37f9a9dfbd12b79af0fcd045b477087593/a2" data-source="For now though the other promisor remotes will be tried in the order they appear in the config file." onmousemove="i18n(this)">&Ncy;&acy; &dcy;&acy;&ncy;&ncy;&ycy;&jcy; &mcy;&ocy;&mcy;&iecy;&ncy;&tcy; &dcy;&rcy;&ucy;&gcy;&icy;&iecy; &pcy;&ucy;&lcy;&softcy;&tcy;&ycy; Promisor &bcy;&ucy;&dcy;&ucy;&tcy; &ocy;&pcy;&rcy;&ocy;&bcy;&ocy;&vcy;&acy;&ncy;&ycy; &vcy; &tcy;&ocy;&mcy; &pcy;&ocy;&rcy;&yacy;&dcy;&kcy;&iecy;, &vcy; &kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&mcy; &ocy;&ncy;&icy; &ucy;&kcy;&acy;&zcy;&acy;&ncy;&ycy; &vcy; &fcy;&acy;&jcy;&lcy;&iecy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_current_limitations"><span data-i18n="abcd6e40f30db671d36a3adb2c8e948298c5cd9874fb8ffcf061e09af52f7a4c/27" data-source="Current limitations" onmousemove="i18n(this)">Current limitations</span></h2> <div> <div> <ul> <li> <p><span data-i18n="c02a88b318134e22375151d1f78138df1dd1eb7d2ff8727fe0d57d7275cacfc2/21" data-source="It is not possible to specify the order in which the promisor remotes are tried in other ways than the order in which they appear in the config file." onmousemove="i18n(this)">&Ncy;&iecy;&vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy; &ucy;&kcy;&acy;&zcy;&acy;&tcy;&softcy; &pcy;&ocy;&rcy;&yacy;&dcy;&ocy;&kcy;, &vcy; &kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&mcy; &pcy;&ucy;&lcy;&softcy;&tcy;&ycy;-&pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ycy; &ocy;&pcy;&rcy;&ocy;&bcy;&ucy;&yucy;&tcy;&scy;&yacy; &dcy;&rcy;&ucy;&gcy;&icy;&mcy;&icy; &scy;&pcy;&ocy;&scy;&ocy;&bcy;&acy;&mcy;&icy;, &kcy;&rcy;&ocy;&mcy;&iecy; &pcy;&ocy;&rcy;&yacy;&dcy;&kcy;&acy;, &vcy; &kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&mcy; &ocy;&ncy;&icy; &ucy;&kcy;&acy;&zcy;&acy;&ncy;&ycy; &vcy; &fcy;&acy;&jcy;&lcy;&iecy; &kcy;&ocy;&ncy;&fcy;&icy;&gcy;&ucy;&rcy;&acy;&tscy;&icy;&icy;.</span></p> <p><span data-i18n="6e5483eafb2a6a31ae7192a13bcf09e9997685031acc1e66d0f30fb3a12025c4/c3" data-source="It is also not possible to specify an order to be used when fetching from one remote and a different order when fetching from another remote." onmousemove="i18n(this)">&Tcy;&acy;&kcy;&zhcy;&iecy; &ncy;&iecy;&vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy; &ucy;&kcy;&acy;&zcy;&acy;&tcy;&softcy; &pcy;&ocy;&rcy;&yacy;&dcy;&ocy;&kcy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &pcy;&rcy;&icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&iecy; &scy; &ocy;&dcy;&ncy;&ocy;&gcy;&ocy; &pcy;&ucy;&lcy;&softcy;&tcy;&acy; &icy; &dcy;&rcy;&ucy;&gcy;&ocy;&jcy; &pcy;&ocy;&rcy;&yacy;&dcy;&ocy;&kcy; &pcy;&rcy;&icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&iecy; &scy; &dcy;&rcy;&ucy;&gcy;&ocy;&gcy;&ocy; &pcy;&ucy;&lcy;&softcy;&tcy;&acy;.</span></p> </li> <li> <p><span data-i18n="28e44d6cabe1b29212eea37c6c9f4247164626479944d755113dfb52d2338e5f/d6" data-source="It is not possible to push only specific objects to a promisor remote." onmousemove="i18n(this)">&Ncy;&iecy;&vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&icy;&tcy;&softcy; &ncy;&acy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&iecy;&ncy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;.</span></p> <p><span data-i18n="379248d5743de45dfc5861c433942d6f21e27607dcfffc10aaa1c7c41e0d2ad6/f1" data-source="It is not possible to push at the same time to multiple promisor remote in a specific order." onmousemove="i18n(this)">&Ncy;&iecy;&vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy; &ocy;&dcy;&ncy;&ocy;&vcy;&rcy;&iecy;&mcy;&iecy;&ncy;&ncy;&ocy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&icy;&tcy;&softcy; &scy;&ocy;&ocy;&bcy;&shchcy;&iecy;&ncy;&icy;&iecy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&icy;&mcy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&mcy; &ocy;&bcy;&iecy;&shchcy;&acy;&ncy;&icy;&yacy;&mcy; &vcy; &ocy;&pcy;&rcy;&iecy;&dcy;&iecy;&lcy;&iecy;&ncy;&ncy;&ocy;&mcy; &pcy;&ocy;&rcy;&yacy;&dcy;&kcy;&iecy;.</span></p> </li> <li> <p><span data-i18n="a53e4cb326ac35af14075c64c90920379bd7f0f14bf3d93171f2dd3060c63169/5e" data-source="Dynamic object fetching will only ask promisor remotes for missing objects. We assume that promisor remotes have a complete view of the repository and can satisfy all such requests." onmousemove="i18n(this)">&Pcy;&rcy;&icy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &bcy;&ucy;&dcy;&iecy;&tcy; &zcy;&acy;&pcy;&rcy;&acy;&shcy;&icy;&vcy;&acy;&tcy;&softcy;&scy;&yacy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&jcy; &dcy;&ocy;&scy;&tcy;&ucy;&pcy; &kcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&mcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;&mcy;. &Mcy;&ycy; &pcy;&rcy;&iecy;&dcy;&pcy;&ocy;&lcy;&acy;&gcy;&acy;&iecy;&mcy;, &chcy;&tcy;&ocy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&iecy; &pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ycy; &icy;&mcy;&iecy;&yucy;&tcy; &pcy;&ocy;&lcy;&ncy;&ocy;&iecy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&iecy; &ocy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy; &icy; &mcy;&ocy;&gcy;&ucy;&tcy; &ucy;&dcy;&ocy;&vcy;&lcy;&iecy;&tcy;&vcy;&ocy;&rcy;&icy;&tcy;&softcy; &vcy;&scy;&iecy; &tcy;&acy;&kcy;&icy;&iecy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&ycy;.</span></p> </li> <li> <p><span data-i18n="7b604730af3c023d55c981a65a55552d105c02dbfa1cd370c205418fd9c3cbe1/47" data-source="Repack essentially treats promisor and non-promisor packfiles as 2 distinct partitions and does not mix them." onmousemove="i18n(this)">Repack &pcy;&ocy; &scy;&ucy;&tcy;&icy; &rcy;&acy;&scy;&scy;&mcy;&acy;&tcy;&rcy;&icy;&vcy;&acy;&iecy;&tcy; &gcy;&acy;&rcy;&acy;&ncy;&tcy;&icy;&rcy;&ucy;&yucy;&shchcy;&icy;&iecy; &icy; &ncy;&iecy; &gcy;&acy;&rcy;&acy;&ncy;&tcy;&icy;&rcy;&ucy;&yucy;&shchcy;&icy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&iecy; &fcy;&acy;&jcy;&lcy;&ycy; &kcy;&acy;&kcy; &dcy;&vcy;&acy; &ocy;&tcy;&dcy;&iecy;&lcy;&softcy;&ncy;&ycy;&khcy; &rcy;&acy;&zcy;&dcy;&iecy;&lcy;&acy; &icy; &ncy;&iecy; &scy;&mcy;&iecy;&shcy;&icy;&vcy;&acy;&iecy;&tcy; &icy;&khcy;.</span></p> </li> <li> <p><span data-i18n="3c00a513af1f92c9f838f751f9598f4e5179900ed738b02348c2e64b5aa53b56/c1" data-source="Dynamic object fetching invokes fetch-pack once &lt;strong&gt;for each item&lt;/strong&gt; because most algorithms stumble upon a missing object and need to have it resolved before continuing their work. This may incur significant overhead &amp;mdash; and multiple authentication requests &amp;mdash; if many objects are needed." onmousemove="i18n(this)">&Pcy;&rcy;&icy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy; fetch-pack &vcy;&ycy;&zcy;&ycy;&vcy;&acy;&iecy;&tcy;&scy;&yacy; &ocy;&dcy;&icy;&ncy; &rcy;&acy;&zcy; &dcy;&lcy;&yacy; &kcy;&acy;&zhcy;&dcy;&ocy;&gcy;&ocy; &ecy;&lcy;&iecy;&mcy;&iecy;&ncy;&tcy;&acy;, &pcy;&ocy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&ucy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&ncy;&scy;&tcy;&vcy;&ocy; &acy;&lcy;&gcy;&ocy;&rcy;&icy;&tcy;&mcy;&ocy;&vcy; &ncy;&acy;&tcy;&ycy;&kcy;&acy;&yucy;&tcy;&scy;&yacy; &ncy;&acy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy; &icy; &dcy;&ocy;&lcy;&zhcy;&ncy;&ycy; &rcy;&acy;&zcy;&rcy;&iecy;&shcy;&icy;&tcy;&softcy; &iecy;&gcy;&ocy;, &pcy;&rcy;&iecy;&zhcy;&dcy;&iecy; &chcy;&iecy;&mcy; &pcy;&rcy;&ocy;&dcy;&ocy;&lcy;&zhcy;&icy;&tcy;&softcy; &scy;&vcy;&ocy;&yucy; &rcy;&acy;&bcy;&ocy;&tcy;&ucy;. &Ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&rcy;&icy;&vcy;&iecy;&scy;&tcy;&icy; &kcy; &zcy;&ncy;&acy;&chcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&mcy; &ncy;&acy;&kcy;&lcy;&acy;&dcy;&ncy;&ycy;&mcy; &rcy;&acy;&scy;&khcy;&ocy;&dcy;&acy;&mcy; &icy; &mcy;&ncy;&ocy;&zhcy;&iecy;&scy;&tcy;&vcy;&iecy;&ncy;&ncy;&ycy;&mcy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&acy;&mcy; &acy;&ucy;&tcy;&iecy;&ncy;&tcy;&icy;&fcy;&icy;&kcy;&acy;&tscy;&icy;&icy;, &iecy;&scy;&lcy;&icy; &tcy;&rcy;&iecy;&bcy;&ucy;&iecy;&tcy;&scy;&yacy; &mcy;&ncy;&ocy;&gcy;&ocy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.</span></p> </li> <li> <p><span data-i18n="26b85c1132506328dba02fecb870d55d7bfea48997efb89487eed26232a0e034/26" data-source="Dynamic object fetching currently uses the existing pack protocol V0 which means that each object is requested via fetch-pack. The server will send a full set of info/refs when the connection is established. If there are a large number of refs, this may incur significant overhead." onmousemove="i18n(this)">&Dcy;&lcy;&yacy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &vcy; &ncy;&acy;&scy;&tcy;&ocy;&yacy;&shchcy;&iecy;&iecy; &vcy;&rcy;&iecy;&mcy;&yacy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ucy;&iecy;&tcy;&scy;&yacy; &scy;&ucy;&shchcy;&iecy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&jcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy; V0, &chcy;&tcy;&ocy; &ocy;&zcy;&ncy;&acy;&chcy;&acy;&iecy;&tcy;, &chcy;&tcy;&ocy; &kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy; &zcy;&acy;&pcy;&rcy;&acy;&shcy;&icy;&vcy;&acy;&iecy;&tcy;&scy;&yacy; &chcy;&iecy;&rcy;&iecy;&zcy; fetch-pack. &Scy;&iecy;&rcy;&vcy;&iecy;&rcy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&icy;&tcy; &pcy;&ocy;&lcy;&ncy;&ycy;&jcy; &ncy;&acy;&bcy;&ocy;&rcy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tscy;&icy;&icy;/&scy;&scy;&ycy;&lcy;&kcy;&icy;, &kcy;&ocy;&gcy;&dcy;&acy; &scy;&ocy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&icy;&iecy; &bcy;&ucy;&dcy;&iecy;&tcy; &ucy;&scy;&tcy;&acy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;&ocy;. &IEcy;&scy;&lcy;&icy; &icy;&mcy;&iecy;&iecy;&tcy;&scy;&yacy; &bcy;&ocy;&lcy;&softcy;&shcy;&ocy;&iecy; &kcy;&ocy;&lcy;&icy;&chcy;&iecy;&scy;&tcy;&vcy;&ocy; &scy;&scy;&ycy;&lcy;&ocy;&kcy;, &ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&ocy;&vcy;&lcy;&iecy;&chcy;&softcy; &zcy;&acy; &scy;&ocy;&bcy;&ocy;&jcy; &zcy;&ncy;&acy;&chcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&iecy; &ncy;&acy;&kcy;&lcy;&acy;&dcy;&ncy;&ycy;&iecy; &rcy;&acy;&scy;&khcy;&ocy;&dcy;&ycy;.</span></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_future_work"><span data-i18n="31cf6469c5cc06b5801d31278e8a1ed327686098ebd0414c526c7be8327c36f5/61" data-source="Future work" onmousemove="i18n(this)">Future work</span></h2> <div> <div> <ul> <li> <p><span data-i18n="c8aa87e4ddca6248223a2fcf555e353f968af7165284ec37b2c3208550eab7f4/6d" data-source="Improve the way to specify the order in which promisor remotes are tried." onmousemove="i18n(this)">&Ucy;&lcy;&ucy;&chcy;&shcy;&icy;&tcy;&iecy; &scy;&pcy;&ocy;&scy;&ocy;&bcy; &ucy;&kcy;&acy;&zcy;&acy;&ncy;&icy;&yacy; &pcy;&ocy;&rcy;&yacy;&dcy;&kcy;&acy;, &vcy; &kcy;&ocy;&tcy;&ocy;&rcy;&ocy;&mcy; &ocy;&pcy;&rcy;&ocy;&bcy;&ucy;&yucy;&tcy;&scy;&yacy; &pcy;&ucy;&lcy;&softcy;&tcy;&ycy;-&pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ycy;.</span></p> <p><span data-i18n="297823fdb2c16358daf4e75e70569f5f86c7ccf373d63e3002c07d6f0a41f67b/db" data-source="For example this could allow specifying explicitly something like: &amp;quot;When fetching from this remote, I want to use these promisor remotes in this order, though, when pushing or fetching to that remote, I want to use those promisor remotes in that order.&amp;quot;" onmousemove="i18n(this)">&Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &ecy;&tcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&icy;&tcy;&softcy; &yacy;&vcy;&ncy;&ocy; &ucy;&kcy;&acy;&zcy;&acy;&tcy;&softcy; &chcy;&tcy;&ocy;-&tcy;&ocy; &vcy;&rcy;&ocy;&dcy;&iecy;:  &quot;When fetching from this remote, I want to use these promisor remotes in this order, though, when pushing or fetching to that remote, I want to use those promisor remotes in that order.&quot;</span></p> </li> <li> <p><span data-i18n="70e471b08c57487a708370f4f03a2901194928d3a0a1e8adb7c3100b46a7412e/ed" data-source="Allow pushing to promisor remotes." onmousemove="i18n(this)">&Rcy;&acy;&zcy;&rcy;&iecy;&shcy;&icy;&tcy;&softcy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&kcy;&ucy; &ncy;&acy; &pcy;&ucy;&lcy;&softcy;&tcy;&ycy;-&pcy;&rcy;&ocy;&mcy;&icy;&scy;&ocy;&rcy;&ycy;.</span></p> <p><span data-i18n="05ae8b251f35e2cec0ac4a24ccc692a4f803b315fbafb0ff6046110cd4bd56c7/82" data-source="The user might want to work in a triangular work flow with multiple promisor remotes that each have an incomplete view of the repository." onmousemove="i18n(this)">&Pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&iecy;&lcy;&softcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &zcy;&acy;&khcy;&ocy;&tcy;&iecy;&tcy;&softcy; &rcy;&acy;&bcy;&ocy;&tcy;&acy;&tcy;&softcy; &vcy; &tcy;&rcy;&iecy;&ucy;&gcy;&ocy;&lcy;&softcy;&ncy;&ocy;&mcy; &rcy;&acy;&bcy;&ocy;&chcy;&iecy;&mcy; &pcy;&rcy;&ocy;&tscy;&iecy;&scy;&scy;&iecy; &scy; &ncy;&iecy;&scy;&kcy;&ocy;&lcy;&softcy;&kcy;&icy;&mcy;&icy; &ucy;&dcy;&acy;&lcy;&iecy;&ncy;&ncy;&ycy;&mcy;&icy; &ucy;&scy;&tcy;&rcy;&ocy;&jcy;&scy;&tcy;&vcy;&acy;&mcy;&icy; Promisor, &kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &icy;&zcy; &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&khcy; &icy;&mcy;&iecy;&iecy;&tcy; &ncy;&iecy;&pcy;&ocy;&lcy;&ncy;&ocy;&iecy; &pcy;&rcy;&iecy;&dcy;&scy;&tcy;&acy;&vcy;&lcy;&iecy;&ncy;&icy;&iecy; &ocy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&icy;.</span></p> </li> <li> <p><span data-i18n="9c1fcfd6532ae1157cc7337c1659e9f08438e33ef9c843634f27cda7c142a353/ee" data-source="Allow non-pathname-based filters to make use of packfile bitmaps (when present). This was just an omission during the initial implementation." onmousemove="i18n(this)">&Rcy;&acy;&zcy;&rcy;&iecy;&shcy;&icy;&tcy;&softcy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&acy;&mcy;, &ncy;&iecy; &ocy;&scy;&ncy;&ocy;&vcy;&acy;&ncy;&ncy;&ycy;&mcy; &ncy;&acy; &icy;&mcy;&iecy;&ncy;&icy; &pcy;&ucy;&tcy;&icy;, &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&tcy;&softcy; &rcy;&acy;&scy;&tcy;&rcy;&ocy;&vcy;&ycy;&iecy; &icy;&zcy;&ocy;&bcy;&rcy;&acy;&zhcy;&iecy;&ncy;&icy;&yacy; &pcy;&acy;&kcy;&fcy;&acy;&jcy;&lcy;&ocy;&vcy; (&iecy;&scy;&lcy;&icy; &ocy;&ncy;&icy; &iecy;&scy;&tcy;&softcy;). &Ecy;&tcy;&ocy; &bcy;&ycy;&lcy;&ocy; &pcy;&rcy;&ocy;&scy;&tcy;&ocy; &ucy;&pcy;&ucy;&shchcy;&iecy;&ncy;&icy;&iecy;&mcy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &pcy;&iecy;&rcy;&vcy;&ocy;&ncy;&acy;&chcy;&acy;&lcy;&softcy;&ncy;&ocy;&jcy; &rcy;&iecy;&acy;&lcy;&icy;&zcy;&acy;&tscy;&icy;&icy;.</span></p> </li> <li> <p><span data-i18n="6de04bd1bfd9db0c5125cb0e25352d13468b14e1e08b081d72b9490bb42cb9d4/f6" data-source="Investigate use of a long-running process to dynamically fetch a series of objects, such as proposed in [5,6] to reduce process startup and overhead costs." onmousemove="i18n(this)">&Icy;&scy;&scy;&lcy;&iecy;&dcy;&ucy;&jcy;&tcy;&iecy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &dcy;&lcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&gcy;&ocy; &pcy;&rcy;&ocy;&tscy;&iecy;&scy;&scy;&acy; &dcy;&lcy;&yacy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&gcy;&ocy; &icy;&zcy;&vcy;&lcy;&iecy;&chcy;&iecy;&ncy;&icy;&yacy; &scy;&iecy;&rcy;&icy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;, &ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &pcy;&rcy;&iecy;&dcy;&lcy;&ocy;&zhcy;&iecy;&ncy;&ncy;&ocy;&gcy;&ocy; &vcy; [5,6], &chcy;&tcy;&ocy;&bcy;&ycy; &ucy;&mcy;&iecy;&ncy;&softcy;&shcy;&icy;&tcy;&softcy; &zcy;&acy;&tcy;&rcy;&acy;&tcy;&ycy; &ncy;&acy; &zcy;&acy;&pcy;&ucy;&scy;&kcy; &pcy;&rcy;&ocy;&tscy;&iecy;&scy;&scy;&acy; &icy; &ncy;&acy;&kcy;&lcy;&acy;&dcy;&ncy;&ycy;&iecy; &rcy;&acy;&scy;&khcy;&ocy;&dcy;&ycy;.</span></p> <p><span data-i18n="75607977c647e5acd412a12014a41908458d3fc5e0b115f76cd17d9d17dbdf17/fc" data-source="It would be nice if pack protocol V2 could allow that long-running process to make a series of requests over a single long-running connection." onmousemove="i18n(this)">&Bcy;&ycy;&lcy;&ocy; &bcy;&ycy; &ncy;&iecy;&pcy;&lcy;&ocy;&khcy;&ocy;, &iecy;&scy;&lcy;&icy; &bcy;&ycy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy; V2 &pcy;&ocy;&zcy;&vcy;&ocy;&lcy;&yacy;&lcy; &ecy;&tcy;&ocy;&mcy;&ucy; &dcy;&lcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&mcy;&ucy; &pcy;&rcy;&ocy;&tscy;&iecy;&scy;&scy;&ucy; &vcy;&ycy;&pcy;&ocy;&lcy;&ncy;&yacy;&tcy;&softcy; &scy;&iecy;&rcy;&icy;&yucy; &zcy;&acy;&pcy;&rcy;&ocy;&scy;&ocy;&vcy; &chcy;&iecy;&rcy;&iecy;&zcy; &ocy;&dcy;&ncy;&ocy; &dcy;&lcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&iecy; &scy;&ocy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&icy;&iecy;.</span></p> </li> <li> <p><span data-i18n="b76ddff28ca1aad6135a618068b689d29acf5cebf1431e2d1b412431d1657ee6/a9" data-source="Investigate pack protocol V2 to avoid the info/refs broadcast on each connection with the server to dynamically fetch missing objects." onmousemove="i18n(this)">&Icy;&zcy;&ucy;&chcy;&icy;&tcy;&iecy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &pcy;&rcy;&ocy;&tcy;&ocy;&kcy;&ocy;&lcy; V2, &chcy;&tcy;&ocy;&bcy;&ycy; &icy;&zcy;&bcy;&iecy;&zhcy;&acy;&tcy;&softcy; &shcy;&icy;&rcy;&ocy;&kcy;&ocy;&vcy;&iecy;&shchcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy;&jcy; &pcy;&iecy;&rcy;&iecy;&dcy;&acy;&chcy;&icy; &icy;&ncy;&fcy;&ocy;&rcy;&mcy;&acy;&tscy;&icy;&icy; &icy; &scy;&scy;&ycy;&lcy;&ocy;&kcy; &pcy;&rcy;&icy; &kcy;&acy;&zhcy;&dcy;&ocy;&mcy; &scy;&ocy;&iecy;&dcy;&icy;&ncy;&iecy;&ncy;&icy;&icy; &scy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy; &dcy;&lcy;&yacy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&gcy;&ocy; &pcy;&ocy;&lcy;&ucy;&chcy;&iecy;&ncy;&icy;&yacy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;.</span></p> </li> <li> <p><span data-i18n="60a79124c8c23e4e6b147178caf537ecfc40a42cec67227524e7fefc4c695e3f/79" data-source="Investigate the need to handle loose promisor objects." onmousemove="i18n(this)">&Icy;&zcy;&ucy;&chcy;&icy;&tcy;&iecy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy;&scy;&tcy;&softcy; &ocy;&bcy;&rcy;&acy;&shchcy;&iecy;&ncy;&icy;&yacy; &scy; &ncy;&iecy;&zcy;&acy;&kcy;&rcy;&iecy;&pcy;&lcy;&iecy;&ncy;&ncy;&ycy;&mcy;&icy; &ocy;&bcy;&iecy;&shchcy;&acy;&ncy;&ncy;&ycy;&mcy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;&mcy;&icy;.</span></p> <p><span data-i18n="39e9376964d994df53208c38c0062d90b695a204c0f8ee7537df040ca5d67a81/c3" data-source="Objects in promisor packfiles are allowed to reference missing objects that can be dynamically fetched from the server. An assumption was made that loose objects are only created locally and therefore should not reference a missing object. We may need to revisit that assumption if, for example, we dynamically fetch a missing tree and store it as a loose object rather than a single object packfile." onmousemove="i18n(this)">&Ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;&mcy; &vcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&khcy; &fcy;&acy;&jcy;&lcy;&acy;&khcy; promisor &rcy;&acy;&zcy;&rcy;&iecy;&shcy;&iecy;&ncy;&ocy; &scy;&scy;&ycy;&lcy;&acy;&tcy;&softcy;&scy;&yacy; &ncy;&acy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &mcy;&ocy;&zhcy;&ncy;&ocy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&icy; &pcy;&ocy;&lcy;&ucy;&chcy;&acy;&tcy;&softcy; &scy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&acy;. &Bcy;&ycy;&lcy;&ocy; &scy;&dcy;&iecy;&lcy;&acy;&ncy;&ocy; &pcy;&rcy;&iecy;&dcy;&pcy;&ocy;&lcy;&ocy;&zhcy;&iecy;&ncy;&icy;&iecy;, &chcy;&tcy;&ocy; &scy;&vcy;&ocy;&bcy;&ocy;&dcy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &scy;&ocy;&zcy;&dcy;&acy;&yucy;&tcy;&scy;&yacy; &tcy;&ocy;&lcy;&softcy;&kcy;&ocy; &lcy;&ocy;&kcy;&acy;&lcy;&softcy;&ncy;&ocy; &icy; &pcy;&ocy;&ecy;&tcy;&ocy;&mcy;&ucy; &ncy;&iecy; &dcy;&ocy;&lcy;&zhcy;&ncy;&ycy; &scy;&scy;&ycy;&lcy;&acy;&tcy;&softcy;&scy;&yacy; &ncy;&acy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;. &Vcy;&ocy;&zcy;&mcy;&ocy;&zhcy;&ncy;&ocy;, &ncy;&acy;&mcy; &pcy;&rcy;&icy;&dcy;&iecy;&tcy;&scy;&yacy; &vcy;&iecy;&rcy;&ncy;&ucy;&tcy;&softcy;&scy;&yacy; &kcy; &ecy;&tcy;&ocy;&mcy;&ucy; &pcy;&rcy;&iecy;&dcy;&pcy;&ocy;&lcy;&ocy;&zhcy;&iecy;&ncy;&icy;&yucy;, &iecy;&scy;&lcy;&icy;, &ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &mcy;&ycy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&icy; &icy;&zcy;&vcy;&lcy;&iecy;&kcy;&acy;&iecy;&mcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&iecy;&iecy; &dcy;&iecy;&rcy;&iecy;&vcy;&ocy; &icy; &scy;&ocy;&khcy;&rcy;&acy;&ncy;&yacy;&iecy;&mcy; &iecy;&gcy;&ocy; &kcy;&acy;&kcy; &ocy;&tcy;&dcy;&iecy;&lcy;&softcy;&ncy;&ycy;&jcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;, &acy; &ncy;&iecy; &kcy;&acy;&kcy; &ocy;&tcy;&dcy;&iecy;&lcy;&softcy;&ncy;&ycy;&jcy; &pcy;&acy;&kcy;&iecy;&tcy;&ncy;&ycy;&jcy; &fcy;&acy;&jcy;&lcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;.</span></p> <p><span data-i18n="02438207ddf787515af82903b91fdd93bce16672080925d9eb2b83292af860cf/96" data-source="This does not necessarily mean we need to mark loose objects as promisor; it may be sufficient to relax the object lookup or is-promisor functions." onmousemove="i18n(this)">&Ecy;&tcy;&ocy; &ncy;&iecy; &ocy;&bcy;&yacy;&zcy;&acy;&tcy;&iecy;&lcy;&softcy;&ncy;&ocy; &ocy;&zcy;&ncy;&acy;&chcy;&acy;&iecy;&tcy;, &chcy;&tcy;&ocy; &ncy;&acy;&mcy; &ncy;&ucy;&zhcy;&ncy;&ocy; &pcy;&ocy;&mcy;&iecy;&chcy;&acy;&tcy;&softcy; &scy;&vcy;&ocy;&bcy;&ocy;&dcy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy; &kcy;&acy;&kcy; &ocy;&bcy;&iecy;&shchcy;&acy;&yucy;&shchcy;&icy;&iecy;; &ecy;&tcy;&ocy;&gcy;&ocy; &mcy;&ocy;&zhcy;&iecy;&tcy; &bcy;&ycy;&tcy;&softcy; &dcy;&ocy;&scy;&tcy;&acy;&tcy;&ocy;&chcy;&ncy;&ocy;, &chcy;&tcy;&ocy;&bcy;&ycy; &ocy;&scy;&lcy;&acy;&bcy;&icy;&tcy;&softcy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&icy; &pcy;&ocy;&icy;&scy;&kcy;&acy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy; &icy;&lcy;&icy; &fcy;&ucy;&ncy;&kcy;&tscy;&icy;&icy; is-promiser.</span></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_non_tasks"><span data-i18n="82683417cacd24e13305af40613d18cbbd80440162f0d4c69579b0e768df6a13/75" data-source="Non-tasks" onmousemove="i18n(this)">Non-tasks</span></h2> <div> <div> <ul> <li> <p><span data-i18n="ba0eed612c02505221fc13fd0dc205a544990df86673ea49f40263810b584621/71" data-source="Every time the subject of &amp;quot;demand loading blobs&amp;quot; comes up it seems that someone suggests that the server be allowed to &amp;quot;guess&amp;quot; and send additional objects that may be related to the requested objects." onmousemove="i18n(this)">&Kcy;&acy;&zhcy;&dcy;&ycy;&jcy; &rcy;&acy;&zcy;, &kcy;&ocy;&gcy;&dcy;&acy; &vcy;&scy;&pcy;&lcy;&ycy;&vcy;&acy;&iecy;&tcy; &tcy;&iecy;&mcy;&acy;  &quot;demand loading blobs&quot; , &scy;&ocy;&zcy;&dcy;&acy;&iecy;&tcy;&scy;&yacy; &vcy;&pcy;&iecy;&chcy;&acy;&tcy;&lcy;&iecy;&ncy;&icy;&iecy;, &chcy;&tcy;&ocy; &kcy;&tcy;&ocy;-&tcy;&ocy; &pcy;&rcy;&iecy;&dcy;&lcy;&acy;&gcy;&acy;&iecy;&tcy; &rcy;&acy;&zcy;&rcy;&iecy;&shcy;&icy;&tcy;&softcy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ucy;  &quot;guess&quot;  &icy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&lcy;&yacy;&tcy;&softcy; &dcy;&ocy;&pcy;&ocy;&lcy;&ncy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ycy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &mcy;&ocy;&gcy;&ucy;&tcy; &bcy;&ycy;&tcy;&softcy; &scy;&vcy;&yacy;&zcy;&acy;&ncy;&ycy; &scy; &zcy;&acy;&pcy;&rcy;&ocy;&shcy;&iecy;&ncy;&ncy;&ycy;&mcy;&icy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;&mcy;&icy;.</span></p> <p><span data-i18n="7bc2e890ea0367a17cbe4c385e0692ec5c53a5a46c222e1a447e6d625d6a3116/1c" data-source="No work has gone into actually doing that; we&amp;rsquo;re just documenting that it is a common suggestion. We&amp;rsquo;re not sure how it would work and have no plans to work on it." onmousemove="i18n(this)">&Ncy;&acy; &scy;&acy;&mcy;&ocy;&mcy; &dcy;&iecy;&lcy;&iecy; &dcy;&lcy;&yacy; &ecy;&tcy;&ocy;&gcy;&ocy; &ncy;&iecy; &bcy;&ycy;&lcy;&ocy; &scy;&dcy;&iecy;&lcy;&acy;&ncy;&ocy; &ncy;&icy;&kcy;&acy;&kcy;&ocy;&jcy; &rcy;&acy;&bcy;&ocy;&tcy;&ycy;; &mcy;&ycy; &pcy;&rcy;&ocy;&scy;&tcy;&ocy; &dcy;&ocy;&kcy;&ucy;&mcy;&iecy;&ncy;&tcy;&icy;&rcy;&ucy;&iecy;&mcy;, &chcy;&tcy;&ocy; &ecy;&tcy;&ocy; &rcy;&acy;&scy;&pcy;&rcy;&ocy;&scy;&tcy;&rcy;&acy;&ncy;&iecy;&ncy;&ncy;&ocy;&iecy; &pcy;&rcy;&iecy;&dcy;&lcy;&ocy;&zhcy;&iecy;&ncy;&icy;&iecy;. &Mcy;&ycy; &ncy;&iecy; &ucy;&vcy;&iecy;&rcy;&iecy;&ncy;&ycy;, &kcy;&acy;&kcy; &ecy;&tcy;&ocy; &bcy;&ucy;&dcy;&iecy;&tcy; &rcy;&acy;&bcy;&ocy;&tcy;&acy;&tcy;&softcy;, &icy; &ncy;&iecy; &pcy;&lcy;&acy;&ncy;&icy;&rcy;&ucy;&iecy;&mcy; &ncy;&acy;&dcy; &ecy;&tcy;&icy;&mcy; &rcy;&acy;&bcy;&ocy;&tcy;&acy;&tcy;&softcy;.</span></p> <p><span data-i18n="02425f2237372c264624ae6f6f94122025d0f5b9dd12daae5112b2a7a3f089b6/14" data-source="It is valid for the server to send more objects than requested (even for a dynamic object fetch), but we are not building on that." onmousemove="i18n(this)">&Scy;&iecy;&rcy;&vcy;&iecy;&rcy; &mcy;&ocy;&zhcy;&iecy;&tcy; &ocy;&tcy;&pcy;&rcy;&acy;&vcy;&lcy;&yacy;&tcy;&softcy; &bcy;&ocy;&lcy;&softcy;&shcy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;, &chcy;&iecy;&mcy; &zcy;&acy;&pcy;&rcy;&ocy;&shcy;&iecy;&ncy;&ocy; (&dcy;&acy;&zhcy;&iecy; &pcy;&rcy;&icy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;), &ncy;&ocy; &mcy;&ycy; &ncy;&acy; &ecy;&tcy;&ocy;&mcy; &ncy;&iecy; &ocy;&scy;&ncy;&ocy;&vcy;&ycy;&vcy;&acy;&iecy;&mcy;&scy;&yacy;.</span></p> </li> </ul> </div> </div> <h2 class="text-body-emphasis"  id="_footnotes"><span data-i18n="ad6fb546c8b88ca54685d9d84088589f6541b808f25027c422c1bfac467c5616/51" data-source="Footnotes" onmousemove="i18n(this)">Footnotes</span></h2> <div> <p><span data-i18n="07dc864b840e860c33e961775179ea81480f0372a342b50e5968b59c8b30c592/b0" data-source="[a] expensive-to-modify list of missing objects: Earlier in the design of partial clone we discussed the need for a single list of missing objects. This would essentially be a sorted linear list of OIDs that were omitted by the server during a clone or subsequent fetches." onmousemove="i18n(this)">[a] &Dcy;&ocy;&rcy;&ocy;&gcy;&ocy;&scy;&tcy;&ocy;&yacy;&shchcy;&icy;&jcy; &dcy;&lcy;&yacy; &icy;&zcy;&mcy;&iecy;&ncy;&iecy;&ncy;&icy;&yacy; &scy;&pcy;&icy;&scy;&ocy;&kcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;. &Rcy;&acy;&ncy;&iecy;&iecy; &pcy;&rcy;&icy; &rcy;&acy;&zcy;&rcy;&acy;&bcy;&ocy;&tcy;&kcy;&iecy; &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&gcy;&ocy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &mcy;&ycy; &ocy;&bcy;&scy;&ucy;&zhcy;&dcy;&acy;&lcy;&icy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy;&scy;&tcy;&softcy; &iecy;&dcy;&icy;&ncy;&ocy;&gcy;&ocy; &scy;&pcy;&icy;&scy;&kcy;&acy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;. &Pcy;&ocy; &scy;&ucy;&tcy;&icy;, &ecy;&tcy;&ocy; &bcy;&ucy;&dcy;&iecy;&tcy; &ocy;&tcy;&scy;&ocy;&rcy;&tcy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&ncy;&ycy;&jcy; &lcy;&icy;&ncy;&iecy;&jcy;&ncy;&ycy;&jcy; &scy;&pcy;&icy;&scy;&ocy;&kcy; OID, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&iecy; &bcy;&ycy;&lcy;&icy; &pcy;&rcy;&ocy;&pcy;&ucy;&shchcy;&iecy;&ncy;&ycy; &scy;&iecy;&rcy;&vcy;&iecy;&rcy;&ocy;&mcy; &vcy;&ocy; &vcy;&rcy;&iecy;&mcy;&yacy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &icy;&lcy;&icy; &pcy;&ocy;&scy;&lcy;&iecy;&dcy;&ucy;&yucy;&shchcy;&icy;&khcy; &vcy;&ycy;&bcy;&ocy;&rcy;&ocy;&kcy;.</span></p> <p><span data-i18n="7ffde499d30cd51aba47e8f4191be0af6d130e9ffce10a9e3af8fa80bf47c50a/6c" data-source="This file would need to be loaded into memory on every object lookup. It would need to be read, updated, and re-written (like the .git/index) on every explicit &amp;quot;git fetch&amp;quot; command &lt;strong&gt;and&lt;/strong&gt; on any dynamic object fetch." onmousemove="i18n(this)">&Ecy;&tcy;&ocy;&tcy; &fcy;&acy;&jcy;&lcy; &ncy;&iecy;&ocy;&bcy;&khcy;&ocy;&dcy;&icy;&mcy;&ocy; &bcy;&ucy;&dcy;&iecy;&tcy; &zcy;&acy;&gcy;&rcy;&ucy;&zhcy;&acy;&tcy;&softcy; &vcy; &pcy;&acy;&mcy;&yacy;&tcy;&softcy; &pcy;&rcy;&icy; &kcy;&acy;&zhcy;&dcy;&ocy;&mcy; &pcy;&ocy;&icy;&scy;&kcy;&iecy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;. &IEcy;&gcy;&ocy; &ncy;&ucy;&zhcy;&ncy;&ocy; &bcy;&ucy;&dcy;&iecy;&tcy; &chcy;&icy;&tcy;&acy;&tcy;&softcy;, &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&yacy;&tcy;&softcy; &icy; &pcy;&iecy;&rcy;&iecy;&zcy;&acy;&pcy;&icy;&scy;&ycy;&vcy;&acy;&tcy;&softcy; (&kcy;&acy;&kcy; .git/index) &pcy;&rcy;&icy; &kcy;&acy;&zhcy;&dcy;&ocy;&jcy; &yacy;&vcy;&ncy;&ocy;&jcy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&iecy;  &quot;git fetch&quot;  &icy; &pcy;&rcy;&icy; &lcy;&yucy;&bcy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&iecy; &dcy;&icy;&ncy;&acy;&mcy;&icy;&chcy;&iecy;&scy;&kcy;&ocy;&gcy;&ocy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&acy;.</span></p> <p><span data-i18n="c46e409c5c41cf515cf1873aba7831e0dea04399f28cf8a71cb36df327e53d90/2e" data-source="The cost to read, update, and write this file could add significant overhead to every command if there are many missing objects. For example, if there are 100M missing blobs, this file would be at least 2GiB on disk." onmousemove="i18n(this)">&Zcy;&acy;&tcy;&rcy;&acy;&tcy;&ycy; &ncy;&acy; &chcy;&tcy;&iecy;&ncy;&icy;&iecy;, &ocy;&bcy;&ncy;&ocy;&vcy;&lcy;&iecy;&ncy;&icy;&iecy; &icy; &zcy;&acy;&pcy;&icy;&scy;&softcy; &ecy;&tcy;&ocy;&gcy;&ocy; &fcy;&acy;&jcy;&lcy;&acy; &mcy;&ocy;&gcy;&ucy;&tcy; &pcy;&rcy;&icy;&vcy;&iecy;&scy;&tcy;&icy; &kcy; &zcy;&ncy;&acy;&chcy;&icy;&tcy;&iecy;&lcy;&softcy;&ncy;&ycy;&mcy; &icy;&zcy;&dcy;&iecy;&rcy;&zhcy;&kcy;&acy;&mcy; &dcy;&lcy;&yacy; &kcy;&acy;&zhcy;&dcy;&ocy;&jcy; &kcy;&ocy;&mcy;&acy;&ncy;&dcy;&ycy;, &iecy;&scy;&lcy;&icy; &vcy; &ncy;&iecy;&mcy; &mcy;&ncy;&ocy;&gcy;&ocy; &ncy;&iecy;&dcy;&ocy;&scy;&tcy;&acy;&yucy;&shchcy;&icy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;. &Ncy;&acy;&pcy;&rcy;&icy;&mcy;&iecy;&rcy;, &iecy;&scy;&lcy;&icy; &pcy;&rcy;&ocy;&pcy;&ucy;&shchcy;&iecy;&ncy;&ocy; 100 &mcy;&icy;&lcy;&lcy;&icy;&ocy;&ncy;&ocy;&vcy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy;, &rcy;&acy;&zcy;&mcy;&iecy;&rcy; &ecy;&tcy;&ocy;&gcy;&ocy; &fcy;&acy;&jcy;&lcy;&acy; &ncy;&acy; &dcy;&icy;&scy;&kcy;&iecy; &bcy;&ucy;&dcy;&iecy;&tcy; &ncy;&iecy; &mcy;&iecy;&ncy;&iecy;&iecy; 2 &Gcy;&icy;&Bcy;.</span></p> <p><span data-i18n="e121ad3ad66907a57d8ab6f95cd990d8ee9d880c759daf558c680c8727bb4a74/3e" data-source="With the &amp;quot;promisor&amp;quot; concept, we &lt;strong&gt;infer&lt;/strong&gt; a missing object based upon the type of packfile that references it." onmousemove="i18n(this)">&Scy; &pcy;&ocy;&mcy;&ocy;&shchcy;&softcy;&yucy; &kcy;&ocy;&ncy;&tscy;&iecy;&pcy;&tscy;&icy;&icy;  &quot;promisor&quot;  &mcy;&ycy; &dcy;&iecy;&lcy;&acy;&iecy;&mcy; &vcy;&ycy;&vcy;&ocy;&dcy; &ocy;&bcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&ucy;&yucy;&shchcy;&iecy;&mcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&iecy; &ncy;&acy; &ocy;&scy;&ncy;&ocy;&vcy;&iecy; &tcy;&icy;&pcy;&acy; &pcy;&acy;&kcy;&ocy;&vcy;&ocy;&chcy;&ncy;&ocy;&gcy;&ocy; &fcy;&acy;&jcy;&lcy;&acy;, &kcy;&ocy;&tcy;&ocy;&rcy;&ycy;&jcy; &scy;&scy;&ycy;&lcy;&acy;&iecy;&tcy;&scy;&yacy; &ncy;&acy; &ncy;&iecy;&gcy;&ocy;.</span></p> </div> <h2 class="text-body-emphasis"  id="_related_links"><span data-i18n="e15056d80f2a0b8dec6dccb928557e4b9fd2f41febd403b42ee636f4a18a7625/86" data-source="Related links" onmousemove="i18n(this)">Related links</span></h2> <div> <p><span data-i18n="538ceddcf61cb531e81c965832567f08414492dae42465e57318f43b7e9b1fa0/63" data-source="[0] &lt;a href=&quot;https://crbug.com/git/2&quot;&gt;https://crbug.com/git/2&lt;/a&gt; Bug#2: Partial Clone" onmousemove="i18n(this)">[0]  <a href="https://crbug.com/git/2">https://crbug.com/git/2</a>  &Ocy;&shcy;&icy;&bcy;&kcy;&acy; &numero; 2: &chcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&iecy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy;</span></p> <p><span data-i18n="bbff4766ecfe7e6ddbb18e7832e50c8fa90fb60fc84ebea2a1e0650159d9f4c4/87" data-source="[1] &lt;a href=&quot;https://lore.kernel.org/git/20170113155253.1644-1-benpeart@microsoft.com/&quot;&gt;https://lore.kernel.org/git/20170113155253.1644-1-benpeart@microsoft.com/&lt;/a&gt;" onmousemove="i18n(this)">[1] <a href="https://lore.kernel.org/git/20170113155253.1644-1-benpeart@microsoft.com/">https://lore.kernel.org/git/<span class="__cf_email__" data-cfemail="3301030204030202000206060106001d020507071e021e51565d4356524147735e5a50415c405c55471d505c5e">[email&#160;protected]</span>/</a></span><br/><span data-i18n="116620ffd32465ab552b11df8dd1f9bfcc1243abbc8ed4b313f4c275a8a4ea51/ff" data-source="Subject: [RFC] Add support for downloading blobs on demand" onmousemove="i18n(this)">&Tcy;&iecy;&mcy;&acy;: [RFC] &Dcy;&ocy;&bcy;&acy;&vcy;&lcy;&iecy;&ncy;&acy; &ZeroWidthSpace;&ZeroWidthSpace;&pcy;&ocy;&dcy;&dcy;&iecy;&rcy;&zhcy;&kcy;&acy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &pcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yucy;.</span><br/><span data-i18n="ad84bb6d76d2143c6d57dcc6d94fcfef1b63cd83a3880c163a2cd7575521adbf/7a" data-source="Date: Fri, 13 Jan 2017 10:52:53 -0500" onmousemove="i18n(this)">&Dcy;&acy;&tcy;&acy;: &Pcy;&tcy;, 13 &yacy;&ncy;&vcy;&acy;&rcy;&yacy; 2017 &gcy;., 10:52:53 -05:00</span></p> <p><span data-i18n="4ce0626c55c866326a9ccc2cc4d1dddd5026c7fb38adb69609be42e2e681762b/6a" data-source="[2] &lt;a href=&quot;https://lore.kernel.org/git/cover.1506714999.git.jonathantanmy@google.com/&quot;&gt;https://lore.kernel.org/git/cover.1506714999.git.jonathantanmy@google.com/&lt;/a&gt;" onmousemove="i18n(this)">[2] <a href="https://lore.kernel.org/git/cover.1506714999.git.jonathantanmy@google.com/">https://lore.kernel.org/git/<span class="__cf_email__" data-cfemail="d8bbb7aebdaaf6e9ede8eeefe9ece1e1e1f6bfb1acf6b2b7b6b9acb0b9b6acb9b6b5a198bfb7b7bfb4bdf6bbb7b5">[email&#160;protected]</span>/</a></span><br/><span data-i18n="9c8e2c9e840f2041fb50f3a65ab2355b428813954c0430597574932e56711bea/2b" data-source="Subject: [PATCH 00/18] Partial clone (from clone to lazy fetch in 18 patches)" onmousemove="i18n(this)">&Tcy;&iecy;&mcy;&acy;: [&Ocy;&Bcy;&Ncy;&Ocy;&Vcy;&Lcy;&IEcy;&Ncy;&Icy;&IEcy; 00/18] &CHcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&iecy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; (&ocy;&tcy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy; &dcy;&ocy; &ocy;&tcy;&lcy;&ocy;&zhcy;&iecy;&ncy;&ncy;&ocy;&jcy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&icy; &zcy;&acy; 18 &pcy;&acy;&tcy;&chcy;&iecy;&jcy;)</span><br/><span data-i18n="1e9cd6fdf9d2ed6c25c437ee2ad383971e277b52ca860fd3572355632baffa7e/93" data-source="Date: Fri, 29 Sep 2017 13:11:36 -0700" onmousemove="i18n(this)">&Dcy;&acy;&tcy;&acy;: &Pcy;&tcy;, 29 &scy;&iecy;&ncy;&tcy;&yacy;&bcy;&rcy;&yacy; 2017 &gcy;., 13:11:36 -0700</span></p> <p><span data-i18n="39d3eeefea79dc00167ec8e57b51e5d3782033a22262f355b2349a88d18dbcc6/f4" data-source="[3] &lt;a href=&quot;https://lore.kernel.org/git/20170426221346.25337-1-jonathantanmy@google.com/&quot;&gt;https://lore.kernel.org/git/20170426221346.25337-1-jonathantanmy@google.com/&lt;/a&gt;" onmousemove="i18n(this)">[3] <a href="https://lore.kernel.org/git/20170426221346.25337-1-jonathantanmy@google.com/">https://lore.kernel.org/git/<span class="__cf_email__" data-cfemail="ccfefcfdfbfcf8fefafefefdfff8fae2fef9fffffbe1fde1a6a3a2adb8a4ada2b8ada2a1b58caba3a3aba0a9e2afa3a1">[email&#160;protected]</span>/</a></span><br/><span data-i18n="1281552393e81f2209ba468b1c0445c74f61c2438ad5185b02549b3f305a50ea/8e" data-source="Subject: Proposal for missing blob support in Git repos" onmousemove="i18n(this)">&Tcy;&iecy;&mcy;&acy;: &Pcy;&rcy;&iecy;&dcy;&lcy;&ocy;&zhcy;&iecy;&ncy;&icy;&iecy; &ocy;&bcy; &ocy;&tcy;&scy;&ucy;&tcy;&scy;&tcy;&vcy;&icy;&icy; &pcy;&ocy;&dcy;&dcy;&iecy;&rcy;&zhcy;&kcy;&icy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &vcy; &rcy;&iecy;&pcy;&ocy;&zcy;&icy;&tcy;&ocy;&rcy;&icy;&yacy;&khcy;  Git .</span><br/><span data-i18n="fb8d0c566ded5bcf532d6951cdcd6cc8381b703347d426cea267e72f60b546a4/82" data-source="Date: Wed, 26 Apr 2017 15:13:46 -0700" onmousemove="i18n(this)">&Dcy;&acy;&tcy;&acy;: &Scy;&rcy;, 26 &acy;&pcy;&rcy;&iecy;&lcy;&yacy; 2017 &gcy;., 15:13:46 -07:00</span></p> <p><span data-i18n="d9d4e9a8dfcd431343a211e1592ecd85ddfcf500647934676efb3fbd13df4b80/d9" data-source="[4] &lt;a href=&quot;https://lore.kernel.org/git/1488999039-37631-1-git-send-email-git@jeffhostetler.com/&quot;&gt;https://lore.kernel.org/git/1488999039-37631-1-git-send-email-git@jeffhostetler.com/&lt;/a&gt;" onmousemove="i18n(this)">[4] <a href="https://lore.kernel.org/git/1488999039-37631-1-git-send-email-git@jeffhostetler.com/">https://lore.kernel.org/git/<span class="__cf_email__" data-cfemail="f8c9ccc0c0c1c1c1c8cbc1d5cbcfcecbc9d5c9d59f918cd58b9d969cd59d95999194d59f918cb8929d9e9e90978b8c9d8c949d8ad69b9795">[email&#160;protected]</span>/</a></span><br/><span data-i18n="97fedf1f590ca98a01cbcfe8ca7f5897255873a8f57044b29b884dc4eb13646b/48" data-source="Subject: [PATCH 00/10] RFC Partial Clone and Fetch" onmousemove="i18n(this)">&Tcy;&iecy;&mcy;&acy;: [&Icy;&Scy;&Pcy;&Rcy;&Acy;&Vcy;&Lcy;&IEcy;&Ncy;&Icy;&IEcy; 00/10] &CHcy;&acy;&scy;&tcy;&icy;&chcy;&ncy;&ocy;&iecy; &kcy;&lcy;&ocy;&ncy;&icy;&rcy;&ocy;&vcy;&acy;&ncy;&icy;&iecy; &icy; &vcy;&ycy;&bcy;&ocy;&rcy;&kcy;&acy; RFC.</span><br/><span data-i18n="0367cef3eaeb9981903ee36b8b90b5f489651df7ad159578ec00ecd6ec3fded8/1b" data-source="Date: Wed, 8 Mar 2017 18:50:29 +0000" onmousemove="i18n(this)">&Dcy;&acy;&tcy;&acy;: &Scy;&rcy;, 8 &mcy;&acy;&rcy;&tcy;&acy; 2017 &gcy;. 18:50:29 +0000</span></p> <p><span data-i18n="a191719489195f1181f8537702b27b8e90a26c238fe75a1e591562ec2f67655c/49" data-source="[5] &lt;a href=&quot;https://lore.kernel.org/git/20170505152802.6724-1-benpeart@microsoft.com/&quot;&gt;https://lore.kernel.org/git/20170505152802.6724-1-benpeart@microsoft.com/&lt;/a&gt;" onmousemove="i18n(this)">[5] <a href="https://lore.kernel.org/git/20170505152802.6724-1-benpeart@microsoft.com/">https://lore.kernel.org/git/<span class="__cf_email__" data-cfemail="c7f5f7f6f0f7f2f7f2f6f2f5fff7f5e9f1f0f5f3eaf6eaa5a2a9b7a2a6b5b387aaaea4b5a8b4a8a1b3e9a4a8aa">[email&#160;protected]</span>/</a></span><br/><span data-i18n="c9de764264a1a370e0146a2a1e82014c347f5618ca975eac48fb239e4fe64c12/4c" data-source="Subject: [PATCH v7 00/10] refactor the filter process code into a reusable module" onmousemove="i18n(this)">&Tcy;&iecy;&mcy;&acy;: [PATCH v7 00/10] &rcy;&iecy;&ocy;&rcy;&gcy;&acy;&ncy;&icy;&zcy;&ucy;&iecy;&tcy; &kcy;&ocy;&dcy; &pcy;&rcy;&ocy;&tscy;&iecy;&scy;&scy;&acy; &fcy;&icy;&lcy;&softcy;&tcy;&rcy;&acy; &vcy; &mcy;&ocy;&dcy;&ucy;&lcy;&softcy; &mcy;&ncy;&ocy;&gcy;&ocy;&kcy;&rcy;&acy;&tcy;&ncy;&ocy;&gcy;&ocy; &icy;&scy;&pcy;&ocy;&lcy;&softcy;&zcy;&ocy;&vcy;&acy;&ncy;&icy;&yacy;.</span><br/><span data-i18n="a15faf332bda0266ab001d37509ad997da1fc2d4278909277526c578eb786fee/14" data-source="Date: Fri, 5 May 2017 11:27:52 -0400" onmousemove="i18n(this)">&Dcy;&acy;&tcy;&acy;: &Pcy;&tcy;, 5 &mcy;&acy;&yacy; 2017 &gcy;. 11:27:52 -0400</span></p> <p><span data-i18n="89f62934b05234cb5deff4dc994a057ad36805bf834f096d7d794c0a17fab201/de" data-source="[6] &lt;a href=&quot;https://lore.kernel.org/git/20170714132651.170708-1-benpeart@microsoft.com/&quot;&gt;https://lore.kernel.org/git/20170714132651.170708-1-benpeart@microsoft.com/&lt;/a&gt;" onmousemove="i18n(this)">[6] <a href="https://lore.kernel.org/git/20170714132651.170708-1-benpeart@microsoft.com/">https://lore.kernel.org/git/<span class="__cf_email__" data-cfemail="0230323335323533363331303437332c33353235323a2f332f60676c7267637076426f6b61706d716d64762c616d6f">[email&#160;protected]</span>/</a></span><br/><span data-i18n="693ec05e461d1b2a3b3b5050d1542c1aa92e7a7ea824167eba7c987eceef8373/50" data-source="Subject: [RFC/PATCH v2 0/1] Add support for downloading blobs on demand" onmousemove="i18n(this)">&Tcy;&iecy;&mcy;&acy;: [RFC/PATCH v2 0/1] &Dcy;&ocy;&bcy;&acy;&vcy;&lcy;&iecy;&ncy;&acy; &ZeroWidthSpace;&ZeroWidthSpace;&pcy;&ocy;&dcy;&dcy;&iecy;&rcy;&zhcy;&kcy;&acy; &zcy;&acy;&gcy;&rcy;&ucy;&zcy;&kcy;&icy; &bcy;&ocy;&lcy;&softcy;&shcy;&icy;&khcy; &dcy;&vcy;&ocy;&icy;&chcy;&ncy;&ycy;&khcy; &ocy;&bcy;&hardcy;&iecy;&kcy;&tcy;&ocy;&vcy; &pcy;&ocy; &tcy;&rcy;&iecy;&bcy;&ocy;&vcy;&acy;&ncy;&icy;&yucy;.</span><br/><span data-i18n="da045356ba739d083d57f245d37aa05677651066df7b37fe8c78b4678ecdf2c5/f6" data-source="Date: Fri, 14 Jul 2017 09:26:50 -0400" onmousemove="i18n(this)">&Dcy;&acy;&tcy;&acy;: &Pcy;&tcy;, 14 &icy;&yucy;&lcy;&yacy; 2017 &gcy;., 09:26:50 -04:00</span></p> </div><address>
<p>
    &copy; 2012&ndash;2024 Scott Chacon and others<br/>Licensed under the MIT License.<br/>
<a href="https://git-scm.com/docs/partial-clone">https://git-scm.com/docs/partial-clone</a>
</p>
</address>                </article>
            </main>

            <br>
            <br>
            <hr>

                            <ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-6424571640879890"
     data-ad-slot="3954319254"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script data-cfasync="false" src="../../../cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>            
        </div>

        <!-- -->

        <div class="col-md-3">
            <br>
            <form action="-index-.html">
                <div class="input-group">
                    <input class="form-control" type="search" name="q" placeholder="Search for Git" required>
                    <button class="btn btn-primary" type="submit">
                        <i class="bi bi-search"></i>
                    </button>
                </div>
            </form>
            <br>

                            <div class="list-group list-group-flush">
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="scalar.html">
                            scalar                        </a>
                                            <a class="list-group-item list-group-item-action text-primary-emphasis px-2 text-truncate" href="user-manual.html">
                            User Manual                        </a>
                                    </div>
            
            <br>
            <div class="my-3">
                   <ins class="adsbygoogle"
        style="display:block; text-align:center;"
        data-ad-layout="in-article"
        data-ad-format="fluid"
        data-ad-client="ca-pub-6424571640879890"
        data-ad-slot="3777011170"></ins>
<script>
    (adsbygoogle = window.adsbygoogle || []).push({});
</script>            </div>
            <br>

            
            
        </div>
    </div>
</div>    <!--/sse-->

    <footer>
        <br>
        <div class="container">
            <div class="row">
                <div class="col">
                    <hr>
                    <div class="row">
                        <div class="col-md-10">
                            <ul class="nav">
                                <li class="nav-item">
                                    <a class="nav-link ps-0" href="https://runebook.dev/">Help us Improve Translation</a>
                                </li>
                                                            </ul>
                        </div>
                        <div class="col-md-2 text-end">
                            <a href="partial-clone.html#" class="fs-5" aria-label="Top">
                                <i class="bi bi-arrow-up-square-fill"></i>
                            </a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <br>
    </footer>
    <script src="../../../runebook.js"></script>
</body>

</html>